2014-06-24 131 views
0

我真的很陌生,但我得到了一項我需要完成的任務。SQL - 比較兩個表格

我有一張桌子,我不時會得到一張新桌子。我需要做的是比較新的和舊的,並查看所有的差異(修改後的值,行刪除或行添加)。在獲得所有差異後,我必須創建一個新表格,該表格將成爲第一個表格的更新版本。

經過一天的SQL閱讀後,我得到了EXCEPT,所以我知道如何發現差異(不知道它是否是最好的方式),但我不知道如何完成所有的過程。

SELECT * FROM dbo.Price_List1 
EXCEPT 
SELECT * FROM dbo.Price_List2 

非常感謝您提前。

+0

你在找'MINUS'嗎? –

+1

-1因爲它很不清楚你要求什麼:** 1。**你是什麼意思_「一張新桌子」_?這兩個表(新舊)有完全相同的模式嗎? ** 2。**您是否只對數據差異感興趣(而不是模式差異)? ** 3。**您的意思是_「第一個更新版本」_?感謝您編輯您的問題以清除這些問題。 – stakx

+2

Btw .:您的「EXCEPT」查詢不會讓您知道*所有*差異。假設兩個表都有完全相同的模式(由於'*'不明顯,我建議你養成拼寫所有列名的習慣!),你的查詢只會告訴你哪些記錄專門在'dbo.Price_List1'中。它不會告訴你「dbo.Price_List2」中的專有記錄;爲此,你必須交換兩個'SELECT'語句。 – stakx

回答

0

如果dbo.Price_List1和dbo.Price_List2的模式相等。你可以使用下面的查詢。

( SELECT * FROM dbo.Price_List1 
    EXCEPT 
    SELECT * FROM dbo.Price_List2) 
UNION ALL 
( SELECT * FROM dbo.Price_List2 
    EXCEPT 
    SELECT * FROM dbo.Price_List1)