如何使用具有多个结果的子查询将值插入表中?

Posted

技术标签:

【中文标题】如何使用具有多个结果的子查询将值插入表中?【英文标题】:How can I insert values into a table, using a subquery with more than one result? 【发布时间】:2012-03-30 08:13:55 【问题描述】:

非常感谢您的帮助。

可能这是一个很容易解决的问题 - 但我不是那个.. ;-)

我在 SQL Server 中有两个表:

    文章 价格

现在我想选择一组特定的 id 并将一些条目插入到带有这些 ID 的价格表中。

例如(错误且不工作的 SQL)

INSERT INTO prices (group, id, price) 
VALUES (7, (select articleId from article WHERE name LIKE 'ABC%'), 1.50);

SQL 错误 -> 子查询有多个值

感谢帮助

【问题讨论】:

哇! 2012 年 3 月 13 日 21:18 有这么多正确答案(提示:您可以将鼠标悬停在时间戳上以获取秒数) 【参考方案1】:

我正在使用这种方法。

WITH selected AS (
   SELECT articleId FROM article WHERE name LIKE 'ABC%'
) INSERT INTO prices(group, id, price)
  SELECT 7, articleId, 1.50 from selected;

【讨论】:

【参考方案2】:

试试这个:

INSERT INTO prices (
    group, 
    id,
    price
) 
SELECT
    7,
    articleId,
    1.50
FROM
    article 
WHERE 
    name LIKE 'ABC%';

【讨论】:

【参考方案3】:

如果你在表中插入一条记录,你可以这样做

INSERT INTO yourTable 
VALUES(value1, value2)

但由于要插入多条记录,可以在 SQL 语句中使用SELECT FROM

所以你会想要这样做:

INSERT INTO prices (group, id, price) 
SELECT 7, articleId, 1.50
from article 
WHERE name LIKE 'ABC%'

【讨论】:

【参考方案4】:
INSERT INTO prices(group, id, price)
SELECT 7, articleId, 1.50
FROM article where name like 'ABC%';

【讨论】:

【参考方案5】:

子查询看起来像

 insert into table_name (col1,col2,....) values (select col1,col2,... FROM table_2 ...)

希望有帮助

【讨论】:

【参考方案6】:
INSERT INTO prices (group, id, price)
  SELECT 7, articleId, 1.50 FROM article WHERE name LIKE 'ABC%'

【讨论】:

【参考方案7】:

你想要:

insert into prices (group, id, price)
select 
    7, articleId, 1.50
from article where name like 'ABC%';

您只需对常量字段进行硬编码。

【讨论】:

INSERT INTO iden_course (Cse_M_ID,Cse_M_Name,Cse_M_ShName, Cse_M_TotSem,Cse_M_CreatedDate) 值 ('ID','BJf', 'BJfg' , '4',Now( )) select max(Cse_M_ID) as ID from iden_course 如何在这个查询中添加

以上是关于如何使用具有多个结果的子查询将值插入表中?的主要内容,如果未能解决你的问题,请参考以下文章

将值插入具有DATETIME列的表中

如何在子查询中使用外部查询中的列从另一个表中获取结果?

如何使用 SQL 查询将值传递给具有空间/地理数据类型的存储过程

将值插入到存在于多个数据库中的表中

将值插入到从父表引用的子表中

如何使用 SqlCommand 返回多个结果集?