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 条件可能更有效)
问题: 我想将 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 条件可能更有效)