使用基于键值的另一个表中的数据更新一个表中的字段

时间:2012-06-28 10:36:44

标签: sql tsql sql-server-2008-r2 subquery

我需要通过匹配两个表中的ID字段,通过将文本数据与我的辅助表tblSecond中的Notes字段连接来更新我的表tblMain中的Notes字段。

我使用的是以下SQL:

UPDATE tblMain
SET tblMain.Notes = (tblMain.Notes + (SELECT DISTINCT Notes FROM tblSecond
WHERE tblSecond.ID = tblMain.ID))

但是我收到以下错误

  

子查询返回的值超过1。

可能是因为SELECT语句返回整个结果集。

我如何成功执行此操作?

2 个答案:

答案 0 :(得分:1)

如果子查询返回的值超过1,则表示tblSecond包含相应ID的多个条目。所以我建议先检查一下你的数据。

更新本身也可以使用from子句编写,类似这样(未经测试)

update tblMain
    set Notes = a.Notes + b.Notes
from
    tblMain a
    inner join tblSecond b on a.Id = b.Id

答案 1 :(得分:1)

如果子查询返回的值超过1,它将处理。

UPDATE tblmain 
SET    tblmain.notes = ( tblmain.notes 
                         + (SELECT DISTINCT notes + ' ' 
                            FROM   tblsecond 
                            WHERE  tblsecond.id = tblmain.id 
                            FOR xml path ('')) )