両方とも SSN 変数を持つ 2 つのテーブルがあり、両方ではなく 1 つのテーブルだけにあるものを表示したいとしましょう。
これを行う正しい方法は何ですか?
1 つの方法を次に示します。
select coalesce(t1.ssn, t2.ssn)
from t1 full outer join
t2
on t1.ssn = t2.ssn
where t1.ssn is null or t2.ssn is null;
これはほとんどのデータベースで機能しますが、MySQL では機能しません。以下は、ほとんどすべてのデータベースで機能するはずです。
select ssn
from ((select ssn, 't1' as which
from t1
) union all
(select ssn, 't2' as which
from t2
)
) t
group by ssn
having count(distinct which) = 1