【发布时间】:2016-01-18 10:52:10
【问题描述】:
我有一个返回主键列表 (user_id) 的 Select 语句。
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 除外。
我本可以“更新”而不是插入,但我需要保留旧行用于其他目的。
到目前为止,我所做的只是获得了一个 user_id(s) 列表,并且在 Java 中,遍历该列表并逐个插入。
【问题讨论】:
-
您的插入语句中有三个值,但您只从表中选择一个。另外两个是哪里来的?
-
哦,对不起。我刚刚修改了声明。基本上,除了 user_id 之外,所有插入的 value1、...、value5 都是相同的。