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

时间:2011-06-22 15:09:46

标签: sql-server-2008

这个问题与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中不同的行。

推荐的方法是什么?

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

1 个答案:

答案 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)