Bem, o mais fácil de entender - mas não necessariamente o mais rápido - é provavelmente algo assim. (Mas você pode querer dizer outra coisa por "comparar".)
-- Values in column1 that aren't in column2.
SELECT column1 FROM query1
WHERE column1 NOT IN (SELECT column2 FROM query2);
-- Values in column2 that aren't in column1.
SELECT column2 FROM query2
WHERE column2 NOT IN (SELECT column1 FROM query1);
-- Values common to both column1 and column2
SELECT q1.column1 FROM query1 q1
INNER JOIN query2 q2 ON (q1.column1 = q2.column2);
Você também pode fazer isso em uma única declaração para fornecer uma comparação visual. Uma
FULL OUTER JOIN
retorna todos os valores em ambas as colunas, com valores correspondentes na mesma linha e NULL
onde uma coluna está faltando um valor que está na outra coluna. SELECT q1.column1, q2.column2 FROM query1 q1
FULL OUTER JOIN query2 q2 ON (q1.column1 = q2.column2);