我有2个光标,其中光标1有select * from table 1
,光标2有select * from table 2
。我需要比较2个游标,如果游标1中的获取行不等于游标2的获取行,那么我想从表2中删除该获取的行。请帮我怎么做?
答案 0 :(得分:1)
为什么你要用游标做到这一点?如果我理解正确,你可以这样做:
DELETE B
FROM table1 A
INNER JOIN table2 B
ON A.Id = B.Id
WHERE A.column1 <> B.column1 OR A.column2 <> B.Column2 ....
或类似的东西。
答案 1 :(得分:1)
您可以使用EXCEPT
来识别已更改的行。
;WITH DirtyRows AS
(
SELECT * FROM [Table 1]
EXCEPT
SELECT * FROM [Table 2]
)
DELETE [Table 2]
WHERE EXISTS
(
SELECT * FROM DirtyRows
WHERE DirtyRows.Id = [Table 2].Id
)