SQLの INTERSECT の使い道って何だろう?と。。。
よくあるテーブルの抽出結果を任意のテーブルに insert するのは、
INSERT INTO tableA( column1 ,column2 ) SELECT column1 ,column2 FROM tableB
登録で重複が起きる時、UPSERT文や以下のようなMERGE文、
DBの種類によって書き方に多少の違いがあるにせよだいたい以下のようにして実行しているが、
MERGE INTO tableA USING tableB ON 結合条件 WHEN MATCHED THEN update文 WHEN NOT MATCHED THEN insert文
を使うであろう。
これを実行する前に、重複だけを抽出して欲しいという要求がきたらどうするか?
INTERSECT を使う。そもそもINTERSECT:積集合は、2つの検索結果で結果として
同じであるものを求めることであり、集合の重なり部分を求めること。
だから、
SELECT column1 ,column2 FROM tableA INTERSECT SELECT column1 ,column2 FROM tableB
のように、UNION や UNION ALL を書いた時のように使用する。
UNION のように列名も同じである必要がある。
意外と大量に重複だけを求めて欲しいという要件があまりないので実践でも少ないのかもしれない。