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
我有 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