我想比较记录的两个表记录。我为每个表都有两个光标。代码看起来像这样
Declare Cursor c1 for SELECT * from Table1
OPEN c1
While @@Fetch_status=0
Begin
Declare Cursor c2 for SELECT * from Table2
OPEN c2
WHILE @@Fetch_Status=0
Begin
/*Comparison happens here*/
END
END
在fecthing时,我必须指定我正在获取的光标以及如何执行此操作?
修改
对于Table1中的每条记录,我想
开放给其他解决方案(不限于游标)
答案 0 :(得分:2)
如果表具有相同的列定义,则fastes方式只是使用'except'子句:
SELECT * from Table1
except
SELECT * from Table2
也以相反的方式运行它:
SELECT * from Table2
except
SELECT * from Table1
你会看到确切的设置差异:
<强> EXCEPT and INTERSECT 强>
答案 1 :(得分:1)
Redgate has a great tool ,如果您只是花几美元:
您可以免费试用,看看它是否符合您的需求。
答案 2 :(得分:0)
你能不能......
SELECT * FROM Table1 LEFT JOIN Table2 ON <your matching criteria>
...然后对右边的“half”为NULL的行执行INSERT,对那些不是的行执行UPDATE?