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
我想知道是,是否有任何寫這個考慮簡單的方式存在的行,表列和列的順序是一樣的嗎?
我有兩個具有相同字段的表,35個相同的字段。更簡單的方法來獲取2個mySQL表的差異?
我知道我可以找出什麼不其中一人用
SELECT first.a, first.b, first.c FROM first LEFT JOIN second USING(a,b,c)
WHERE second.a IS NULL
我想知道是,是否有任何寫這個考慮簡單的方式存在的行,表列和列的順序是一樣的嗎?
另一種選擇是:
SELECT DISTINCT a, b, c FROM first
WHERE (a, b, c) NOT IN
(SELECT a, b, c FROM second)
這是不是一大堆簡單,但它可能是你在找什麼。 另外,您的版本應該更高效。
不幸的是,不在MySQL中。
在最現代的DBMS,你可以使用MINUS
操作爲:
SELECT col1, col2, col3
FROM tablea
MINUS
SELECT col1, col2, col3
FROM tableb
但MySQL不支持MINUS
操作呢。
其實`NOT IN`和`NOT EXISTS`版本在MySQL中通常更高效。 – 2011-02-16 17:55:13