比较2个表的值并列出不同的行

Emm*_*l F 7 sql-server-2008

这个问题和这个问题一样,但略有不同.

我有2个表,TableA和TableB,其中TableB实际上只是TableA的备份,唯一真正的区别是TableB有一个"ACTION"列,表示在TableA中采取的操作.现在我忽略了那个专栏(虽然理想情况下我希望将它附加到最终结果中,所以请随意建议:D)

我想比较两个表,并从每个表中获取不同的行.我使用过Jeff的SQL Server博客 - 比较SQL Server中两个表的最短,最快,最简单的方法:UNION!但是,创建查询的示例只返回TableB中不同的行.

推荐的方法是什么?

注意:代码与第二个链接中的示例完全相同,因此我不会在此处发布任何代码

Bob*_*bst 8

这将为你提供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)