INTERSECT
本课属于 Coddy SQL 学习旅程的“进阶内容”单元。第 17 课,共 27 课。
INTERSECT 只返回出现在两个结果集中的行。和 UNION 一样,它会删除重复项,并要求两侧的列相匹配。
SELECT email FROM newsletter_subs
INTERSECT
SELECT email FROM premium_users这样就能找出所有既订阅了新闻简报又是高级用户的邮箱,无需编写连接查询。
为什么要费这个功夫,明明用 JOIN 也能做到?当两边都是简单的 SELECT,并且你匹配的是整行而不只是 id 时,INTERSECT 更简短。
挑战
简单可用的表和列:
newsletter:activepremium:plan
返回既是活跃的 newsletter 订阅者(active = 1</code),<strong>又</strong>是使用 <code>'pro' 方案的高级用户的电子邮件。按字母顺序排序。
亲手试试
-- 在 INTERSECT 之前分别筛选两侧的数据
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
进阶内容中的所有课
自己练习: SQL 在线编辑器