SQL查询需求:找出Users表中经历全部5种状态的userId
查询经历全部5种状态的用户ID
要找出经历过所有5种状态的用户ID,我们可以通过分组统计每个用户的不同状态数量来实现,具体SQL语句如下:
SELECT userId FROM Users GROUP BY userId HAVING COUNT(DISTINCT state) = 5;
逻辑说明
GROUP BY userId:按用户ID分组,将同一用户的所有记录归为一组COUNT(DISTINCT state):统计每组内不同状态的数量,使用DISTINCT是为了避免同一用户重复同一状态导致统计结果失真HAVING COUNT(DISTINCT state) = 5:筛选出不同状态数量恰好为5的用户,也就是经历过全部5种状态的目标用户
示例验证
结合你提供的示例数据,执行上述SQL后会返回userId=2,因为只有该用户包含了Unregistered、registered、subscribed、premier、unsubscribed所有5种状态。
内容的提问来源于stack exchange,提问作者samar taj Shaikh
相关产品推荐
相关产品推荐

