SQL如何实现每个用户名仅返回1行 即便关联多条唯一操作系统记录
解决方法
方案1:仅对用户名字段应用DISTINCT
你之前用DISTINCT仍返回重复用户名的原因是SELECT列表里包含了操作系统字段,不同的Windows版本会让整条记录被判定为唯一,自然无法对用户名去重。只要调整查询字段,仅返回用户名即可:
SELECT DISTINCT 用户名 FROM 你的表名 WHERE 操作系统字段 LIKE '%windows%';
对应你给出的示例数据,执行后只会返回JohnDoe、JennyDoe两条不重复的用户名记录。
方案2:用GROUP BY分组实现
如果后续你需要附加统计需求(比如同时查询每个用户使用过多少款不同的Windows系统),可以用分组逻辑实现:
SELECT 用户名 FROM 你的表名 WHERE 操作系统字段 LIKE '%windows%' GROUP BY 用户名;
需要统计时直接在SELECT后追加COUNT(DISTINCT 操作系统字段) AS 使用过的Windows版本数即可。
内容的提问来源于stack exchange,提问作者Ransome
相关产品推荐
相关产品推荐

