2つの結果セットのセットの差を取得するにはどうすればよいですか?
結果セットがあるとしましょう(それぞれに1列だけ):
result1:
'a'
'b'
'c'
result2:
'b'
'c'
Result1にあるものをresult2でマイナスしたい:result1-result2。
difference of result1 - result2:
'a'
Result1-result2を実行するには、result1とresult2を結合し、result1に存在するアイテムのみを出力します。例えば:
SELECT DISTINCT result1.column
FROM result1 LEFT JOIN result2 ON result1.column = result2.column
WHERE result2.column IS NULL
はセットdifferenceではなく、result1に存在しないresult2のアイテムは出力しないことに注意してください。設定されています減算。
関連項目: 関連するブログ投稿のWebアーカイブ版 。
result1
にないものでresult2
にないものが必要な場合はどうでしょうか:
SELECT distinct result1
FROM t1
WHERE result1 NOT IN (select distinct result2 from t2);
または:
SELECT distinct result
from t1 t
where NOT EXISTS (select 1 from t2 where result2 = t.result1)
注:result1
がresult2
のサブセットである場合、上記のクエリは空のセットを返します(result2
にないものはresult1
に表示されません)そのため、それらは設定された差ではありませんが、役に立つかもしれません(おそらく、外部結合よりも効率的です)。