2016-03-16 130 views
0

我試圖寫一些SQL將記錄插入到一​​個PG表。Postgres的INSERT INTO與SELECT

這是邏輯:

  • 對於在costprojects表中的每個記錄已coststatus_id = 1
  • 插入新的記錄到costestimates表
    • costcat_id = 30,量= 0, costproject_id = costproject.id(從costprojects記錄),維修= 'FALSE',位置= 22

這是SQL代碼,我想:

INSERT INTO costestimates (costcat_id, amount, costproject_id, maintenance, position) VALUES (30, 0, costproject.id, false, 22) 
(SELECT id FROM costprojects WHERE coststatus_id=1) 

我得到錯誤:語法錯誤或接近「(」

+2

'INSERT INTO costestimates(costcat_id,金額,costproject_id,維護位置) SELECT 30,0,身份證,假的,22 costprojects WHERE coststatus_id = 1;' –

+0

你不需要()的值,你可以做'插入AA(...)選擇1,2,3 ,從X那裏xy格式= x.z 4;' – wildplasser

+0

伊爾達·-穆辛 - 感謝 - 如果你回答,我會接受 – Reddirt

回答

1

應該是這樣的:

INSERT INTO costestimates (costcat_id, amount, costproject_id, maintenance, position) 
SELECT 30, 0, id, false, 22 FROM costprojects WHERE coststatus_id=1; 

postgres INSERT syntax

0

你的語法有點過;你想要的是用你的SELECT語句實際編寫VALUES列表。

嘗試是這樣的:

INSERT INTO 
    costestimates (costcat_id, amount, costproject_id, maintenance, position) 
    (SELECT 30, 0, id, false, 22 FROM costprojects WHERE coststatus_id=1) 
+0

周圍的'select'括號是完全無用的。 –

+0

是的,但也無害,並增加它們有助於溝通之間'INSERT INTO表()VALUES()'和'INSERT INTO表(並行)(SELECT)' – Hamms