如何解决使用SELECT插入仅列的子集和列顺序
问题:我想将dummy_data_temp
中存在(但不存在)的行插入dummy_data
中。 dummy_data
由10列组成,dummy_data_temp
仅是这些列的子集(4个,这4列在dummy_data
中具有列索引2、6、9、10。)。为此,我使用下面的查询
运行此命令时,出现以下错误:
警告:postgresqlExecStatement中的错误:RS-DBI驱动程序:(无法检索结果:错误:列“ XXX”的类型为双精度,但表达式的类型为文本
LINE 1: INSERT INTO dummy_data SELECT dummy_data_temp.* FROM dummy_d... ^ HINT: You will need to rewrite or cast the expression.`
问题:是否可以通过名称引用插入所选的列,或者dummy_data_temp
是否必须始终与dummy_data
包含相同的列(以及列顺序)?
INSERT INTO dummy_data
SELECT dummy_data_temp.*
FROM dummy_data_temp
LEFT OUTER JOIN dummy_data ON (dummy_data.id=dummy_data_temp.id)
WHERE (dummy_data.id IS NULL)
解决方法
只需指定目标列和源列:
INSERT INTO dummy_data (column_2,column_6,column_9,column_10)
SELECT t.col4,t.col2,t.col1,c.col3
FROM dummy_data_temp t
LEFT OUTER JOIN dummy_data dd ON dd.id = t.id
WHERE dd.id IS NULL;
(尽管“不存在”条件可能更有效)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。