MySQL:两个结果集的差异

Zom*_*ies 39 mysql set-difference

如何获得两个结果集的设置差异?

假设我有一个结果集(每个只有一列):

result1:
'a'
'b'
'c'

result2:
'b'
'c'
Run Code Online (Sandbox Code Playgroud)

我想减去result2中result1的结果:result1 - result2使得它等于:

 difference of result1 - result2:
 'a'
Run Code Online (Sandbox Code Playgroud)

rjh*_*rjh 59

要执行result1 - result2,可以将result1与result2连接,并仅输出result1中存在的项.例如:

SELECT DISTINCT result1.column
FROM result1 LEFT JOIN result2 ON result1.column = result2.column
WHERE result2.column IS NULL
Run Code Online (Sandbox Code Playgroud)

请注意,这不是设置差异,并且不会输出result2中不存在的result2中的项目.这是减法.

另见:http://www.bitbybit.dk/carsten/blog/?p = 71


小智 14

如果你想要的东西result1不在result2,那么:

SELECT distinct result1
FROM t1 
WHERE result1 NOT IN (select distinct result2 from t2);
Run Code Online (Sandbox Code Playgroud)

要么:

SELECT distinct result
from t1 t
where NOT EXISTS (select 1 from t2 where result2 = t.result1)
Run Code Online (Sandbox Code Playgroud)

注意:如果result1是一个子集,result2那么上面的查询将返回一个空集(他们不会告诉你的事情在result2未在result1),所以他们不差集,但可能是太有用(也许这是比外部更有效加入).