MySQL return 如果值在另一个 table 中为空则结果

MySQL return result if value is empty in another table

我有 2 mysql tables "users1" 和 "users2"。他们都有以下字段

users1: email, zipcode, first_name, last_name, processed
users2: email, zipcode, first_name, last_name

我有以下 SQL 查询:

SELECT zipcode FROM users1 WHERE processed IS NOT NULL

目前此查询 return 是 users1 table 的结果。但是,在 return 结果之前,我想检查 "zipcode" 在 users2 table.

中不存在

所以基本上,如果 "users1" 中的 returned 邮政编码在 "users2"

中不存在,它只需要 return 结果

知道我该怎么做吗?

谢谢

试试这个未经测试的查询:

select user2.zipcode from user2 where user2.zipcode not in (SELECT zipcode FROM users1 WHERE processed IS NOT NULL)

您可以使用 NOT IN:

SELECT zipcode
FROM users1 
WHERE processed IS NOT NULL
  AND zipcode NOT IN
       (SELECT distinct zipcode from users2)

使用外部联接过滤仅获取其他行中不存在的行table:

SELECT u1.zipcode
FROM users1 u1
LEFT JOIN users2 u2 ON u2.zipcode = u1.zipcode
WHERE processed IS NOT NULL
AND u2.zipcode IS NULL