あれ、同じ結果のはずなのになんか違う
2つのSQLを利用して出した結果、同じ行数がでるはずなのに微妙な差が出る場合、何の差が出ているんだろうと悩む事があります。検証のために別のSQLを作って出してみたら、微妙に違うなんてこともあったりして。
この時に素早く、その差を結果として出力するためのSQLです。SQLの結果を結合するのはUNIONというSQL文がありますが、その逆、SQLの結果の差だけを表示します。
EXCEPTでいけます
EXCEPT [ALL]
ALL:重複業も出力する
使い方
SELECT col1,col2 FROM table1 EXCEPT ALL SELECT col1,col2 FROM table2
こうする事で、どこが違うんだろうと悩んだら、一発でその差を出すことができ、原因究明に役立ちます。
Oracleだとminusってあるみたいですけど、PostgreSQLではExceptで行きましょう。