簡體   English   中英

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 中的列索引為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM