我有一个Select语句,它返回一个主键列表(user_id)。
select user_id from myttable
where <some-condition>;
然后我想为上一个Select中返回的每个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
对于所有插入都是相同的。
我本可以做到&#34;更新&#34;而不是插入,但我需要保留旧行以用于其他目的。
到目前为止,我所做的是我刚刚获得了一个user_id(s)列表,并且在Java中,通过该列表并逐个插入。
答案 0 :(得分:5)
insert into mytable(user_id,col1,col2)
select user_id,'static_val1','static_val2'
from myttable
where <some-condition>
答案 1 :(得分:2)
如果value1 ... value5是文字值,则可以执行以下操作:
INSERT INTO mytable
SELECT id, value1, value2, value3, value4, value5 FROM mytable WHERE <some-condition>