如何查询steps表中未完成指定步骤(如步骤3)的用户?
针对Steps表的SQL查询方案
一、判断指定步骤X是否已完成
要确认某个用户是否完成了步骤X,可通过以下两种方式实现:
- 快速返回布尔结果:
SELECT EXISTS( SELECT 1 FROM steps WHERE name = '目标用户名' AND step = X ) AS is_step_x_completed;
EXISTS会返回1(已完成)或0(未完成),无对应记录时直接返回0。
- 直观返回状态文本:
SELECT CASE WHEN COUNT(1) > 0 THEN '已完成' ELSE '未完成' END AS step_x_status FROM steps WHERE name = '目标用户名' AND step = X;
二、查询所有未完成步骤3的用户
基于提供的示例数据,以下三种方法均可筛选出未完成步骤3的用户(示例结果为Jenny、Joe):
方法1:用NOT EXISTS排除已完成用户
SELECT DISTINCT name FROM steps s1 WHERE NOT EXISTS( SELECT 1 FROM steps s2 WHERE s2.name = s1.name AND s2.step = 3 );
方法2:LEFT JOIN关联后筛选未匹配项
SELECT DISTINCT s1.name FROM steps s1 LEFT JOIN steps s2 ON s1.name = s2.name AND s2.step = 3 WHERE s2.id IS NULL;
方法3:分组后判断步骤完成情况
SELECT name FROM steps GROUP BY name HAVING MAX(step) < 3 OR SUM(CASE WHEN step=3 THEN 1 ELSE 0 END) = 0;
内容的提问来源于stack exchange,提问作者Logan
相关产品推荐
相关产品推荐

