0

両方のテーブルの ID フィールドを一致させて、セカンダリ テーブル tblSecond の Notes フィールドとテキスト データを連結して、テーブル tblMain の Notes フィールドを更新する必要があります。

次のSQLを使用していました。

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

しかし、次のエラーが表示されます

サブクエリが複数の値を返しました。

おそらく、SELECT ステートメントが結果セット全体を返すためです。

この操作を正常に実行するにはどうすればよいですか?

4

2 に答える 2

1

サブクエリが複数の値を返す場合、対応する ID のエントリが tblSecond に複数含まれていることを意味します。そのため、最初にデータを確認することをお勧めします。

更新自体は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

サブクエリが複数の値を返す場合に処理します。

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 に答える