【问题标题】:SQL - Insert into a table for a specific list of IDsSQL - 插入到特定 ID 列表的表中
【发布时间】: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 都是相同的。

标签: mysql sql oracle


【解决方案1】:
insert into mytable(user_id,col1,col2) 
select user_id,'static_val1','static_val2' 
from myttable
where <some-condition>

【讨论】:

  • 需要一个“某些条件”的例子
  • 任何有效的 where 子句
【解决方案2】:

如果 value1 ... value5 是文字值,您可以执行以下操作:

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

【讨论】:

  • 您应该明确输入的值,否则这将是一个等待发生的错误......insert into mytable(id, value1, value2, value3...) select id, value1, value2, value3...
猜你喜欢
  • 1970-01-01
  • 2012-08-20
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多