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
In set theory terms this is a set difference of result1 and result2, i.e. elements in result1 but not in result2.
If you are looking for a symmetric difference (elements in either result1 or result2, but not both), you can do a FULL OUTER JOIN and filter out elements where either side is NULL.
Finally, as a caveat, this won’t work well if you have nullable columns in your database, as these will be seen identically to a row where the join failed. Thankfully, joins are normally performed on indexed columns, where nullable values are rare.
See also: Web archive’d version of relevant blog post.