示例
示例
SELECT id FROM members
INTERSECT
SELECT id FROM paid_users;
SELECT id FROM members
EXCEPT
SELECT id FROM blacklist; -- 标准/PG 写法;Oracle 叫 MINUS兼容写法
兼容写法
-- 交集
SELECT m.id FROM members m
JOIN paid_users p ON p.id = m.id;
-- 差集
SELECT m.id FROM members m
WHERE NOT EXISTS (SELECT 1 FROM blacklist b WHERE b.id = m.id);| 版本 | MySQL 8.0.31 起支持 INTERSECT/EXCEPT;更早版本用 JOIN/NOT EXISTS 模拟 |
|---|---|
| 去重 | 默认去重,保留重复用 INTERSECT ALL / EXCEPT ALL |
| 优先级 | MySQL 8 中 INTERSECT 优先级高于 UNION/EXCEPT |