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 查询

使用 (SELECT YA AS A, ZB AS B from Y INNER JOIN Z ON Y.Id = Z.Id) 作为 TARGET.A = SOURCE.A 和 TARGET.B = SOURCE.B 上的源将 X 合并为目标,然后不匹配插入值(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 回答