2011-06-22 170 views
7

這個問題與this question相同,但略有不同。比較2個表格的值並列出不同的行

我有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

您確定表A中有不在表B中的行嗎?你能提供一組簡化的數據來說明問題嗎? –

+0

TableA中不應有任何不在TableB中的行,但這是可以接受的。我現在想要做的唯一事情就是比較TableA和TableB中的行。 –

回答

8

這會給你的一切內容,這不是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) 
+0

我試過這樣,不幸的是它在MS SQL Server管理工作室中爲我列出了兩個不同的視圖。我不熟悉SQL來將兩個結果合併在一起。雖然我有一種感覺,它會變得非常簡單。 –

相關問題