2011-02-16 68 views
2

我有两个具有相同字段的表,35个相同的字段。更简单的方法来获取2个mySQL表的差异?

我知道我可以找出什么不其中一人用

SELECT first.a, first.b, first.c FROM first LEFT JOIN second USING(a,b,c) 
WHERE second.a IS NULL 

我想知道是,是否有任何写这个考虑简单的方式存在的行,表列和列的顺序是一样的吗?

回答

3

另一种选择是:

SELECT DISTINCT a, b, c FROM first 
WHERE (a, b, c) NOT IN 
(SELECT a, b, c FROM second) 

这是不是一大堆简单,但它可能是你在找什么。 另外,您的版本应该更高效。

+0

其实`NOT IN`和`NOT EXISTS`版本在MySQL中通常更高效。 – 2011-02-16 17:55:13

2

不幸的是,不在MySQL中。

在最现代的DBMS,你可以使用MINUS操作为:

SELECT col1, col2, col3 
FROM tablea 
MINUS 
SELECT col1, col2, col3 
FROM tableb 

但MySQL不支持MINUS操作呢。