如何获得两个结果集的集合差异?MySQL:两个结果集的差异
说我有一个结果集(每个只有一个列):
result1:
'a'
'b'
'c'
result2:
'b'
'c'
我要负什么是在RESULT1通过RESULT2:RESULT1 - RESULT2使得它等于:
difference of result1 - result2:
'a'
如何获得两个结果集的集合差异?MySQL:两个结果集的差异
说我有一个结果集(每个只有一个列):
result1:
'a'
'b'
'c'
result2:
'b'
'c'
我要负什么是在RESULT1通过RESULT2:RESULT1 - RESULT2使得它等于:
difference of result1 - result2:
'a'
要执行result1 - result2,可以将result1与result2结合,并且只输出result1中存在的项目。例如:
SELECT DISTINCT result1.column
FROM result1 LEFT JOIN result2 ON result1.column = result2.column
WHERE result2.column IS NULL
注意,不是一套差异,并且不会在RESULT2输出项目中不存在RESULT1。它设置为减法。
如果你想在result1
事情是不是在result2
,何谈:
SELECT distinct result1
FROM t1
WHERE result1 NOT IN (select distinct result2 from t2);
或者:
SELECT distinct result
from t1 t
where NOT EXISTS (select 1 from t2 where result2 = t.result1)
注意:如果result1
是一个子集的result2
然后上述查询将返回一个空集(他们不会告诉你的东西在result2
不在result1
),所以它们没有设置差异,但也可能有用(可能比外部联接效率更高)。
感谢您的澄清,我已经使用MySQL已经有一段时间了。 – 2010-04-27 18:30:09