Sql server sql server游标比较
我有两个游标,其中游标1具有表1中的Sql server sql server游标比较,sql-server,cursor,Sql Server,Cursor,我有两个游标,其中游标1具有表1中的select*,游标2具有表2中的select*。我需要比较两个游标,如果游标1中提取的行不等于游标2的提取行,那么我想从表2中删除该提取行。请帮助我如何执行此操作?为什么要使用游标执行此操作?如果我理解正确,您可以执行以下操作: DELETE B FROM table1 A INNER JOIN table2 B ON A.Id = B.Id WHERE A.column1 <> B.column1 OR A.column2 <> B
select*
,游标2具有表2中的select*。我需要比较两个游标,如果游标1中提取的行不等于游标2的提取行,那么我想从表2中删除该提取行。请帮助我如何执行此操作?为什么要使用游标执行此操作?如果我理解正确,您可以执行以下操作:
DELETE B
FROM table1 A
INNER JOIN table2 B
ON A.Id = B.Id
WHERE A.column1 <> B.column1 OR A.column2 <> B.Column2 ....
删除B
来自表1 A
内连接表2b
在A.Id=B.Id上
其中A.column1 B.column1或A.column2 B.column2。。。。
或者类似的东西。您可以使用除
以外的方法来标识更改的行
;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
)
严肃地说:摆脱光标!使用基于集合的操作(如