質問

2つの結果セットのセットの違いを取得するにはどうすればよいですか?

結果セットがあるとします(それぞれに1つの列のみ):

result1:
'a'
'b'
'c'

result2:
'b'
'c'

結果2:result1 -result2で結果になっているものをマイナスしたいので、

 difference of result1 - result2:
 'a'
役に立ちましたか?

解決

result1 -result2を実行するには、result1でresult1を結合し、結果1に存在する出力アイテムのみを結合できます。例えば:

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

それはセットではないことに注意してください 違い, 、および結果1に存在しない結果2にアイテムを出力しません。セットです 減算.

参照: 関連するブログ投稿の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)

注:if result1 のサブセットです result2 その後、上記のクエリは空のセットを返します(彼らはあなたに物事を見せません result2 それはありません result1)したがって、それらは設定された違いではありませんが、有用かもしれません(おそらく外側の結合よりも効率的です)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top