[英]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 中的列索引為dummy_data
)。 為此,我使用下面的查詢
運行此命令時出現以下錯誤:
警告: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;
(但 NOT EXISTS 條件可能更有效)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.