gpt4 book ai didi

mysql - 选择具有一种角色且仅具有一种角色的所有用户 - 多 2 多关系

转载 作者:行者123 更新时间:2023-11-29 09:04:39 25 4
gpt4 key购买 nike

我的管理区域中有一个页面,我想在其中禁止用户,但我只想允许禁止具有一个角色的用户,即用户。这是一些示例数据

用户 1 - 角色(禁止)
用户 2 - 角色(管理员、用户)
用户 3 - 角色(已关闭)

用户 4 - 角色(用户)

仅应返回用户 4,因为他们是唯一拥有该用户角色且的用户。我尝试在下面编写自己的查询,但遇到了如何排除不仅仅具有 user 角色的用户的问题。

SELECT users.*, COUNT(*) AS role_count
FROM users
JOIN roles_users
ON users.id = roles_users.user_id
JOIN roles
ON roles_users.role_id = roles.id
GROUP BY users.id

WHERE Roles.name = 'user' 放入其中会使 role_count = 1

感谢任何帮助。

最佳答案

SELECT users.*, COUNT(*) AS role_count, 
SUM(case roles.name when 'user' then 1 else 0 end) AS IsUser
FROM users
JOIN roles_users
ON users.id = roles_users.user_id
JOIN roles
ON roles_users.role_id = roles.id
GROUP BY users.id
HAVING COUNT(*) = 1
AND SUM(case roles.name when 'user' then 1 else 0 end) = 1

关于mysql - 选择具有一种角色且仅具有一种角色的所有用户 - 多 2 多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7417873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com