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

如何在GROUP BY分组COUNT为1的结果中返回对应Rol字段值

可以实现,有两种常见的实现方案:

方案1:聚合函数直接取值(单条语句无嵌套)

当HAVING COUNT(Rol) = 1的条件触发时,分组后的用户对应的Rol只有唯一值,直接用MAX()/MIN()聚合函数就能取出对应的Rol名称,不需要额外嵌套查询:

SELECT 
  User,
  COUNT(Rol) AS RolCount,
  MAX(Rol) AS Rol
FROM `table`
GROUP BY User
HAVING COUNT(Rol) = 1;

方案2:子查询关联原表(扩展性更强)

如果后续需要查询更多用户相关的字段,可以先通过子查询筛选出角色数为1的用户,再关联原表取对应的角色信息:

SELECT 
  t.User,
  cnt.RolCount,
  t.Rol
FROM `table` t
INNER JOIN (
  SELECT User, COUNT(Rol) AS RolCount
  FROM `table`
  GROUP BY User
  HAVING COUNT(Rol) = 1
) cnt ON t.User = cnt.User;

注意说明

不能直接在原GROUP BY语句的SELECT后加未分组的Rol字段,在开启ONLY_FULL_GROUP_BY模式的数据库(如默认配置的MySQL 5.7及以上版本)中会直接报错,因为非分组、非聚合的字段不允许出现在GROUP BY查询的返回字段中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:27:00