我试图更好地理解“不在”如何与 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
.
我已经这样做了,只是使用地址1:
SELECT * FROM current_mailing_list
WHERE address1 NOT IN
(select address1 from old_mailing_list);
它产生了一个更大的列表(大约是大小的 10 倍)。所以我想补充city
一下。还是我的逻辑完全错误,需要另一种方法?