如何编写MySQL查询从sent表筛选打开过1号和/或2号邮件的用户

需求实现方案
你需要的MySQL查询语句可以参考以下两种场景选择:
场景1:筛选打开过1号或2号任意一个邮件的用户(匹配你要求的输出结果,排除Fred)
SELECT DISTINCT username FROM sent WHERE opened = 1 AND emailnumber IN (1, 2);
逻辑说明:
opened = 1过滤出已成功打开的邮件记录emailnumber IN (1, 2)限定只统计1、2号邮件的打开行为DISTINCT对用户名去重,避免同一个用户多次打开邮件出现重复条目
场景2:筛选同时打开过1号和2号两个邮件的用户(扩展场景)
如果后续需要筛选两类邮件都打开过的用户,可以用分组聚合判断:
SELECT username FROM sent WHERE opened = 1 AND emailnumber IN (1, 2) GROUP BY username HAVING COUNT(DISTINCT emailnumber) = 2;
内容的提问来源于stack exchange,提问作者Aadv
相关产品推荐
相关产品推荐

