0
我在2個不同的數據庫中有2個表。列的名稱和一切匹配。我如何運行查詢來查看兩個表中的數據是完全相同的。我需要檢查每一行。比較2個相同的數據差異表
我在2個不同的數據庫中有2個表。列的名稱和一切匹配。我如何運行查詢來查看兩個表中的數據是完全相同的。我需要檢查每一行。比較2個相同的數據差異表
如果您只需要對整個數據集做出肯定/否定的答案,並且表中至少有一個鍵,則使用所有列執行內部聯接,並驗證返回的行數是否等於每個表中的行。
select
count(*)
from
a
inner join b
on
a.c1 = b.c1 and
a.c2 = b.c2 and
a.c3 = b.c3
如果需要從每個表中,作爲歸一化的結果不同的特定的行,則需要從每個表中的多個(至少2)選擇,一個以檢索獨特的(非相交)的行。因爲這些表格是相同的模式,所以可以很好地合併這些表格,並將源表格列投影到結果中,以指示每行的起始位置。
如果您需要通過鍵關聯導致的差異(如在編輯之前/之後查找,包括行內容更改,行添加和行刪除),並且您的DBMS支持完整外連接,則可以執行完整外鍵連接,只返回不是所有列都相等的結果。請注意,假設這些密鑰在刪除後不會重複使用。
SELECT *
FROM a
FULL OUTER JOIN b
ON a.PK = b.PK
WHERE
a.c1 <> b.c1 OR
a.c2 <> b.c2 OR
a.c3 <> b.c3
注意上面的例子中還假設兩個空值比較相等的,如可與MS SQL經由「SET ANSI NULLS OFF」來完成。用這種方式來表達就更快了。
將數據表導出爲文件,然後使用白色腳本進行比較。 – Kasyx 2013-05-08 10:33:58