テーブル同士の比較
テーブル同士が等しいか異なるかを集合演算子で華麗に比較する方法。
もしテーブルAとテーブルBが完全に等しければ、UNIONの結果とINTERSECTの結果も等しい。
もしテーブルAとテーブルBが異なれば、UNIONの方がINTERSECTより必ず大きくなる。
↑真ん中が完全に等しいとき。
元テーブル(classb classd classe)
・classBとclassDで比較
select case when count(*) = 0 then '等しい' else '異なる' end result from(( SELECT * FROM classb union SELECT * FROM classd ) except ( select * from classb intersect SELECT * FROM classd )) as inte
結果:異なる
・classBとclassEで比較
select case when count(*) = 0 then '等しい' else '異なる' end result from(( SELECT * FROM classb union SELECT * FROM classe ) except ( select * from classb intersect SELECT * FROM classe )) as inte
結果:等しい
テーブルの中身を一切知らなくても比較できるSQL。
集合指向っぽくてとても良き。