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

非常感谢您的帮助。

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

我在 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 错误 -> 子查询有多个值

感谢帮助

【问题讨论】:

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

标签: sql insert subquery


【解决方案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 如何在这个查询中添加
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-10-20
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多