PostgreSQLで二つのSELECT句の差集合を取得したい!
某案件で、二つのSELECT句の差集合(Aにいて、Bにいないもの)を取りたいなーとふと思って調べたらあったので使ってみた!
EXCEPT句を使ってみた
SELECT
-- 0,2,4,6,8,10
generate_series( 0, 10, 2 )
EXCEPT
SELECT
-- 0,3,6,9
generate_series( 0, 10, 3 )
結果
2
4
10
8
※実際にはgenerate_series
で使うなんてことはしませんw
まとめ
実際には、なかなか使いどころはないし、使わずに解決できることのほうが多いと思いますが、引き出しの一つとしては持っておいてよさそう。
(後MySQLにはこれに該当する関数がないんだってさ。。。)