示例
示例
SELECT u.id, u.name
FROM users u
WHERE NOT EXISTS (
SELECT 1 FROM orders o WHERE o.user_id = u.id
);与 NOT IN 的差异
与 NOT IN 的差异
-- user_id 含 NULL 时,下面这条可能一条都不返回
SELECT * FROM users
WHERE id NOT IN (SELECT user_id FROM orders);| NULL | NOT EXISTS 不受子查询 NULL 影响 |
|---|---|
| 索引 | 内表连接键索引决定效率 |
| 改写 | 与 LEFT JOIN ... IS NULL 结果一致,选可读性好的 |