【问题标题】:SQL Update using Select statement使用 Select 语句进行 SQL 更新
【发布时间】:2012-12-05 16:40:00
【问题描述】:

我必须通过查询联系人表将联系人姓名添加到分配表中。

Contact表:

 ID     First_name     Last_Name
 -----------------------------------
 1234   John           Jones
 9876   Mary           Smith

Assignment

 ContactID   Name
 -----------------
  1234
  9876

使用这个查询我得到 ​​p>

子查询返回超过 1 个值。

查询:

 update A  
 set Name = (select  distinct first_name + ' ' + last_name from contacts c join        Assignments A on c.id = A.contact_id where A.contact_id = c.id)
 from Assignments  A 
 join contacts c on c.id = A.contact_id
 where c.id = A.contact_id

我错过了什么?

【问题讨论】:

    标签: sql sql-server-2005 select


    【解决方案1】:

    JOIN他们直接,像这样:

    UPDATE a
    SET a.Name = c.first_name + ' ' + c.last_name
    FROM Assignments a
    INNER JOIN Contacts c  ON c.id = A.contact_id
    

    【讨论】:

    • 谢谢 Mahmoud,我知道我想多了。感谢您的帮助
    【解决方案2】:

    试试

    Update A
    Set A.name = c.First_name + ' ' + c.Last_name
    From Assignment A JOIN Contacts C ON A.ContactID = C.ID
    

    【讨论】:

      【解决方案3】:

      不需要子选择

      UPDATE A  
         SET Name = c.first_name + ' ' + c.last_name
      FROM Assignments  A 
      JOIN contacts c 
         ON c.id = A.contact_id
      

      【讨论】:

        【解决方案4】:

        试试这个

        UPDATE a
        SET a.Name = c.first_name + ' ' + c.last_name
        FROM Assignments a
        INNER JOIN Contacts c  ON c.id = A.contact_id
        

        【讨论】:

        • 欢迎使用 StackOverflow:如果您发布代码、XML 或数据示例,在文本编辑器中突出显示这些行并单击“代码示例”按钮 ({ } ) 在编辑器工具栏上很好地格式化和语法突出显示它!
        猜你喜欢
        • 2023-03-08
        • 1970-01-01
        • 2010-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-15
        • 2013-02-11
        • 2012-05-18
        相关资源
        最近更新 更多