views:

154

answers:

2

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'
A: 

Nevermind my answer, INTERSECT is not supported in MySQL.

Use the inner join approach suggested. :)

Francisco Soto
INTERSECT is not in MySQL.
rjh
+4  A: 

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: http://www.bitbybit.dk/carsten/blog/?p=71

rjh
Thanks for your clarification, it's been a while since I've worked with MySQL.
Francisco Soto