GROUP BY 是否适配统计用户角色数场景?如何编写对应原生SQL?
问题解答
GROUP BY适用性说明
这个场景可以使用GROUP BY,但针对仅统计单个指定用户角色总数的需求,GROUP BY不是必须方案:
- 仅查询单用户角色数:直接用WHERE过滤+COUNT统计即可,写法更简洁
- 需批量统计多个用户各自的角色数:GROUP BY是最优适配方案
原生SQL实现示例
请将下述SQL中的[user_role_table]替换为你实际的表名。
方案1:单用户统计(无GROUP BY,推荐单用户场景使用)
-- 如果表已设置(user_id, role_id)联合唯一约束,可去掉DISTINCT SELECT COUNT(DISTINCT role_id) AS role_count FROM [user_role_table] WHERE user_id = 1;
执行后返回的role_count字段就是对应用户的角色总数。
方案2:GROUP BY实现(支持批量统计)
单用户查询版本
SELECT user_id, COUNT(DISTINCT role_id) AS role_count FROM [user_role_table] WHERE user_id = 1 GROUP BY user_id;
全量用户批量统计版本
SELECT user_id, COUNT(DISTINCT role_id) AS role_count FROM [user_role_table] GROUP BY user_id;
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

