Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Postgres查询错误_Postgresql_Mysql - Fatal编程技术网

Postgresql Postgres查询错误

Postgresql Postgres查询错误,postgresql,mysql,Postgresql,Mysql,我在postgres有一个问题 insert into c_d (select * from cd where ak = '22019763'); 我得到以下错误 ERROR: column "region" is of type integer but expression is of type character varying HINT: You will need to rewrite or cast the expression. 在表1中插入SELECT*FROMTABLE2

我在postgres有一个问题

insert into c_d (select * from cd where ak = '22019763');
我得到以下错误

ERROR:  column "region" is of type integer but expression is of type character varying
HINT:  You will need to rewrite or cast the expression.
在表1中插入SELECT*FROMTABLE2完全取决于列的顺序,这是表定义的一部分。它将表1中的每一列与表2中具有相同顺序值的列对齐,而不考虑名称

这里的问题是,cd中与表区域的c_d具有相同顺序值的任何列都具有不兼容的类型,并且无法使用隐式类型转换来消除混淆

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

如果可能的话,我建议显式调用SELECT语句中的列。您可以调用一个函数来更改每个列引用中的类型,也可以定义一个新的类型转换来隐式执行此操作-请参见创建转换,您可以使用AS来设置列标签以匹配目标列的标签

如果由于某种原因无法执行此操作,请在问题中指出。

查看PostgreSQL,语法为:

INSERT INTO table [ ( column [, ...] ) ]
{ DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) | query }
这看起来像:

INSERT INTO c_d (column1, column2...) select * from cd where ak = '22019763'

这是在列类型和顺序不完全相同的情况下,将值从一个表插入到另一个表时要使用的语法。

是否确定c_d和cd表的字段顺序相同?否则,显式指示查询中的字段c_d表中的字段比cd表中的字段多。还有其他方法吗?为了进一步澄清,下面介绍如何在这样的语句Postgres中描述列名,将行从另一个表复制到一个表中:INSERT into tablename col1,col2,col3 SELECT*FROM…如果确实需要,只是为了帮助大家:从信息模式中选择列名称。表名称为'my\u db'和表名称为'table1'的列,从信息模式中选择列名称除外。表名称为'my\u db'和表名称为'table2'的列;这将为您提供表1中不在表2中的列。一定要以相反的方向运行。将这些列添加到每个表中以使列相同。我有一个900多列的表格,这很有帮助。