这个问题和这个问题一样,但略有不同.
我有2个表,TableA和TableB,其中TableB实际上只是TableA的备份,唯一真正的区别是TableB有一个"ACTION"列,表示在TableA中采取的操作.现在我忽略了那个专栏(虽然理想情况下我希望将它附加到最终结果中,所以请随意建议:D)
我想比较两个表,并从每个表中获取不同的行.我使用过Jeff的SQL Server博客 - 比较SQL Server中两个表的最短,最快,最简单的方法:UNION!但是,创建查询的示例只返回TableB中不同的行.
推荐的方法是什么?
注意:代码与第二个链接中的示例完全相同,因此我不会在此处发布任何代码
这将为你提供A中不属于B的所有东西
select * from tableA
Except
select * from tableB
Run Code Online (Sandbox Code Playgroud)
反之亦然
select * from tableB
Except
select * from tableA
Run Code Online (Sandbox Code Playgroud)
编辑:加入这种方式:
(select * from tableA
Except
select * from tableB)
union all
(select * from tableB
Except
select * from tableA)
Run Code Online (Sandbox Code Playgroud)