INSERT INTO with SELECT(仅列的子集和列排序)

INSERT INTO with SELECT (only subset of columns and column ordering)

问题: 我想将 dummy_data_temp 中存在(但不存在)的行插入到 dummy_data 中。 dummy_data 包含 10 列,dummy_data_temp 仅包含这些列的子集(4 并且这 4 列在 dummy_data 中的列索引为 2、6、9、10)。为此,我使用下面的查询

当运行这个命令时我得到以下错误:

Warning: Error in postgresqlExecStatement: RS-DBI driver: (could not Retrieve the result : ERROR: column "XXX" is of type double precision but expression is of type text

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;

(但 NOT EXISTS 条件可能更有效)