SQL - 插入表中以获取特定的ID列表

时间:2015-10-19 23:11:58

标签: mysql sql oracle

我有一个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中,通过该列表并逐个插入。

2 个答案:

答案 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>