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

MySQL/MariaDB如何筛选拥有全部指定权限的userId

查询拥有全部指定权限的用户ID(MySQL/MariaDB)

没问题,我来帮你搞定这个需求!要找出拥有权限ID 1到8全部权限的用户,核心思路是先锁定目标权限范围,再按用户分组统计权限数量,最后筛选出权限数量等于目标总数的用户。

解决方案SQL

SELECT userId
FROM user2permission
WHERE permissionId IN (1,2,3,4,5,6,7,8)
GROUP BY userId
HAVING COUNT(DISTINCT permissionId) = 8;

代码解释

  • WHERE permissionId IN (1,2,3,4,5,6,7,8):先过滤掉无关的权限记录,只保留我们关心的8个权限,减少后续统计的计算量
  • GROUP BY userId:把同一个用户的所有权限记录归为一组,方便统计每个用户的权限情况
  • HAVING COUNT(DISTINCT permissionId) = 8:统计每组中不同权限的数量(加DISTINCT是为了避免同一个用户重复拥有某条权限的情况,比如如果某个用户有两条permissionId=1的记录,也不会干扰统计结果),数量等于8的就是拥有全部目标权限的用户

用你提供的示例数据测试这条SQL,正好会返回userId=6,完全符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:39:57