2015-10-19 46 views
0

我有一個Select語句返回主鍵(user_id)的列表。SQL - 插入表的ID爲特定列表

select user_id from myttable 
where <some-condition>; 

然後,我想插入一個新的行爲每個從上一個選擇返回的ID。我可以在單個SQL查詢中執行此操作嗎?它可以是這樣的嗎?看起來很像我在這裏需要一個循環。

insert into mytable 
values (user_id, value1, value2, value3, value4, value5) 
where user_id in 
(select user_id from myttable 
    where <some-condition>) 

value1, value2, ..., value5是所有插入件(一個或多個)相同,除了user_id。 我本來可以做「更新」而不是插入,但我需要保留舊行用於其他目的。

到目前爲止,我所做的只是獲取了user_id的列表,而在Java中,通過該列表並逐個插入。

+0

你在你的INSERT語句中有三個值,但你只能選擇一個從表。其他兩位從哪裏來? – Schwern

+1

哦,對不起。我只是修改了聲明。基本上,value1,...,value5對於所有插入都是相同的,除了user_id。 – Simo

回答

4
insert into mytable(user_id,col1,col2) 
select user_id,'static_val1','static_val2' 
from myttable 
where <some-condition> 
2

如果值1 ...值5是文字值,你可以做到以下幾點:

INSERT INTO mytable 
SELECT id, value1, value2, value3, value4, value5 FROM mytable WHERE <some-condition> 
+2

你應該明確你正在輸入的值,否則這將是一個等待發生的錯誤....'插入mytable(id,value1,value2,value3 ...)select id,value1,value2,value3 .. ' – knuckles