这个问题与this question的问题基本相同,但略有不同。
我有2个表,TableA和TableB,其中TableB实际上只是TableA的备份,唯一真正的区别是TableB有一个“ACTION”列,表示在TableA中采取的操作。现在我忽略了那个专栏(虽然理想情况下我希望它附加到最终结果,所以请随意提出建议:D)
我想比较两个表并从每个表中获取不同的行。我使用Jeff's SQL Server Blog - The shortest, fastest, and easiest way to compare two tables in SQL Server: UNION !示例来创建查询,但是,它只返回TableB中不同的行。
推荐的方法是什么?
注意:代码与第二个链接中的示例完全相同,因此我不会在此处发布任何内容
答案 0 :(得分:8)
这将为您提供A中不属于B的所有内容
select * from tableA
Except
select * from tableB
反之亦然
select * from tableB
Except
select * from tableA
编辑:以这种方式加入:
(select * from tableA
Except
select * from tableB)
union all
(select * from tableB
Except
select * from tableA)