You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询求助:获取存在未完成问卷的去重用户列表

解决未完成问卷用户去重查询问题

嘿,这个问题我熟!你现在的SQL语句会返回重复的用户记录,毕竟同一个用户可能发起多份未完成的问卷。要实现“只要有至少一份未完成问卷就只显示一次用户”的需求,我给你几个实用的方案:

方案1:用DISTINCT快速去重

这是最直观的方法,直接在SELECT后加上DISTINCT关键字,它会自动帮你剔除所有完全重复的行,确保每个用户只出现一次:

SELECT DISTINCT Survey.UserID, Survey.Fullname
FROM Survey -- 替换成你实际的表名或关联逻辑
WHERE Survey.SurveySubmitted = 0; -- 0代表未提交

注意:如果你的Fullname和UserID是一一对应的(正常情况都是这样),这个方法完全够用。

方案2:用GROUP BY分组去重

如果想更灵活地控制用户信息的展示(比如同一个UserID对应不同Fullname的极端情况),可以用GROUP BY按UserID分组,再通过聚合函数取唯一的用户名称:

SELECT Survey.UserID, MAX(Survey.Fullname) AS Fullname
FROM Survey
WHERE Survey.SurveySubmitted = 0
GROUP BY Survey.UserID;

这里用MAX()只是取任意一个有效的Fullname,换成MIN()效果一样,只要能保证每个UserID对应唯一的名称即可。

方案3:用EXISTS子查询(大数据量更高效)

如果你的问卷表数据量很大,EXISTS子查询的性能会更优——它只要找到用户存在至少一份未完成问卷的记录,就立刻返回该用户,不需要处理重复行:

-- 假设用户信息存在单独的Users表,问卷表是Surveys
SELECT Users.UserID, Users.Fullname
FROM Users
WHERE EXISTS (
    SELECT 1
    FROM Surveys
    WHERE Surveys.UserID = Users.UserID
      AND Surveys.SurveySubmitted = 0
);

如果你的用户和问卷数据在同一张表,也可以调整成单表的EXISTS查询,逻辑是一样的。


内容的提问来源于stack exchange,提问作者Jean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:27:13