2016-10-21 194 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;