「not in」がMySQLのWHEREでどのように機能するかをよりよく理解しようとしています。
例えば:
SELECT * FROM current_mailing_list
WHERE address1 NOT IN
(select address1 from old_mailing_list) AND
city not in (select city from old_mailing_list);
上記の例では、クエリの目的は、新しい郵送先住所を一覧表示することです。address1
などの番地1234 N. Main St
です。この問題は1234 N. Main St
、複数の都市で発生する場合に発生します。これは発生する可能性があります。そこでcity
、よりユニークにするために追加することにしました。
私の質問は、これは私が期待していることをやっているのですか?old_mailing_list
つまり、 ANDに存在しない番地 (address1) を見つけて、異なるcity
.
address1だけでこれを行いました:
SELECT * FROM current_mailing_list
WHERE address1 NOT IN
(select address1 from old_mailing_list);
そして、はるかに大きなリスト (約 10 倍のサイズ) を作成しました。だから私はこれに追加したいと思いましたcity
。または、私の論理は完全に間違っていて、別のアプローチが必要ですか?