0

我需要通过匹配两个表中的 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 语句正在返回整个结果集。

我将如何成功执行此操作?

4

2 回答 2

1

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

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

update tblMain
    set Notes = a.Notes + b.Notes
from
    tblMain a
    inner join tblSecond b on a.Id = b.Id
于 2012-06-28T10:51:43.273 回答
1

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

UPDATE tblmain 
SET    tblmain.notes = ( tblmain.notes 
                         + (SELECT DISTINCT notes + ' ' 
                            FROM   tblsecond 
                            WHERE  tblsecond.id = tblmain.id 
                            FOR xml path ('')) ) 
于 2012-06-28T10:55:08.640 回答