2016-10-21 148 views
1

我目前正在轉換數據的過程中,在一張表中,這就是爲什麼我創建了一個新表,與舊的表相同,但爲空。比較兩個相同的表MySQL

我已經運行了我的數據轉換器,並且在行數上有所不同。

如何選擇與兩個表不同的所有行,而忽略主鍵標識符(每個條目都不相同)。

+0

我通常會添加一個臨時附加列,其中包含源表的主鍵值。 – Gimby

回答

0
select * from (
SELECT 'Table1',t1.* FROM table1 t1 WHERE 
(t1.id) 
NOT IN (SELECT t2.id FROM table2 t2) 
UNION ALL 
SELECT 'Table2',t2.* FROM table2 t2 WHERE 
(t2.id) 
NOT IN (SELECT t1.id FROM table1 t1))temp order by id; 

您可以添加在列檢查更多信息更多列。 試試看看是否有幫助。

0

這會給你存在於t1而不在t2中的所有行。您列出除ID以外的所有列。 (當然,你可以切換這個來獲得t2中所有行而不是t1中的所有行:-)

select col1, col2, col3, ... from t1 
except 
select col1, col2, col3, ... from t2;