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