MySQL: difference of two result sets

Zombies picture Zombies · Apr 27, 2010 · Viewed 67k times · Source

How can I get the set difference of two result sets?

Say I have a result set (just one column in each):

result1:
'a'
'b'
'c'

result2:
'b'
'c'

I want to minus what is in result1 by result2: result1 - result2 such that it equals:

 difference of result1 - result2:
 'a'

Answer

rjh picture rjh · Apr 27, 2010

To perform result1 - result2, you can join result1 with result2, and only output items that exist in result1. For example:

SELECT DISTINCT result1.column
FROM result1 LEFT JOIN result2 ON result1.column = result2.column
WHERE result2.column IS NULL

Note that is not a set difference, and won't output items in result2 that don't exist in result1. It's set subtraction.

See also: Web archive'd version of relevant blog post.