4

「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。または、私の論理は完全に間違っていて、別のアプローチが必要ですか?

4

3 に答える 3