0

主キーではない 2 つのフィールドを持つテーブルがありますが、重複しているため、それらを使用することはできません。結合されたテーブルからデータを挿入したいのですが、重複を避けたいです。私がしたことは次のとおりです。

insert into X(A,B)
select *
from (Y.A, Z.B
    from Y join Z
    on (Y.id = Z.id)) tmp
    WHERE NOT EXISTS (SELECT * FROM X
        WHERE A = tmp.A
        AND B = tmp.B)

私が理解したように、INSERT ... WHERE NOT EXISTS を使用しないことが最善であると理解しましたが、この種のコードには問題があると思いますか?

4

1 に答える 1

0

MERGEクエリを使用して行うことができます

MERGE X AS TARGET USING (SELECT YA AS A, ZB AS B FROM Y INNER JOIN Z ON Y.Id = Z.Id) AS SOURCE ON TARGET.A = SOURCE.A AND TARGET.B = SOURCE.B 一致しない場合値を挿入 (SOURCE.A、SOURCE.B)

http://www.codeproject.com/Tips/590085/Merge-in-SQL-Server-2008 http://blog.sqlauthority.com/2010/06/08/sql-server-merge-operations-insert-update -一度の実行で削除/

于 2013-06-18T15:00:30.297 に答える