2011-02-16 67 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操作呢。