Postgres查询错误

Rol*_*and 6 mysql postgresql

我在postgres中有一个查询

insert into c_d (select * from cd where ak = '22019763');
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

ERROR:  column "region" is of type integer but expression is of type character varying
HINT:  You will need to rewrite or cast the expression.
Run Code Online (Sandbox Code Playgroud)

Ed *_*rel 10

An INSERT INTO table1 SELECT * FROM table2完全取决于列的顺序,这是表定义的一部分.无论名称如何,它都会将table1的每一列与table2的列相对应,具有相同的顺序值.

你在这里遇到的问题是cd中具有相同顺序值的列与表"region"的c_d具有不兼容的类型,并且隐式类型转换不可用于清除混淆.

INSERT INTO SELECT *语句在风格上是不好的形式,除非定义了两个表,并且将永远以完全相同的方式定义.只需要将一个额外的列添加到cd中,您就会开始收到有关无关额外列的错误.

如果可能的话,我建议明确地在SELECT语句中调用列.您可以调用一个函数来更改每个列引用中的类型(或者您可以定义一个新的类型转换来隐式执行此操作 - 请参阅CREATE CAST),您可以使用它AS来设置列标签以匹配目标列的列标签.

如果由于某种原因无法执行此操作,请在您的问题中指明.