2012-04-25 65 views
2

我有一種情況,我使用某個第三方實用程序更新了一個表,並且想要將它與原始表進行比較並確保它做出正確的更新和插入。獲取表中所有字段不完全匹配的所有記錄JOIN

所以,我想這樣做,但我不太知道的語法:

SELECT * FROM table1 AS a RIGHT OUTER JOIN table2 AS b WHERE 
    <there is some difference between the row from a and the row from b, 
    regardless of which column it's in> 

我如何可以比較所有字段,而不必明確寫出他們都一個接1 ?

編輯:我還要提到的是我沒有在表中的副本更新,因此假定是原始,是更新的副本。

回答

4

你應該使用爲負查詢

select field1, field2, field3, field4 
    from table1 
except 
select field1, field2, field3, field4 
    from table2 

這將返回從表1是其數據(字段1,字段2,字段3,字段4)不能對錶2中的所有行。警告:它不會反其道而行,所以如果您還需要table2中的數據而不是table1中的數據,那麼您必須執行第二個查詢來執行table2 MINUS table1。

+2

TSQL中的負關係運算符是「EXCEPT」(與標準SQL相同)。 – onedaywhen 2012-04-25 13:26:46

+0

一旦我將它改爲EXCEPT,看起來就像是一樣。 – 2012-04-25 13:27:59

+0

@onedaywhen對不起,我來自Oracle開發:) – 2012-04-25 13:30:02

相關問題