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


96

非常感谢您的帮助。

也许这是一个很简单的问题,但我不是那个.. ;-)

我在SQL Server中有两个表:

  1. 文章
  2. 价格

现在,我想选择一组特定的ID,并使用这些ID将一些条目插入价格表。

例如(错误且不起作用的SQL)

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

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

感谢帮助


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

Answers:


148

你要:

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_CreatedDate)VALUES( 'ID', 'BJF', 'BJfg', '4',现在())选择MAX(Cse_M_ID)从iden_course如何在这个查询添加IDCse_M_ShNameCse_M_TotSem
SANDEEP

23

试试这个:

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

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

12

如果您要在表中插入一条记录,则可以

INSERT INTO yourTable 
VALUES(value1, value2)

但是,由于要插入多个记录,因此可以SELECT FROM在SQL语句中使用a 。

因此,您将需要执行以下操作:

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


1
INSERT INTO prices(group, id, price)
SELECT 7, articleId, 1.50
FROM article where name like 'ABC%';
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.