1

所以我有一个用户表,他们的按位权限分为两列。其中一列是permissions,另一列是app1

app1下面根据 中的值显示所有有权查看的用户permissions。列内的值app1将决定它们在 app1 中的作用。

SELECT `authorized_users`.* FROM `authorized_users` WHERE `permissions` & (SELECT `bits` FROM `user_permissions` WHERE `permission_name` = 'app1' AND `app` = 'global') 

我需要看看每个角色有多少人app1。他们都必须有访问权限app1。这再次由permissions列中的值确定,可以使用以下方法找到它们必须具有的值:

SELECT `bits` FROM `user_permissions` WHERE `permission_name` = 'app1' AND `app` = 'global'

我想要具有以下列的结果: supplierclientconsultant每个显示每个角色有多少人。一个用户可以有多个角色,因此使用 BITWISE

user_permissions看起来像这样: 用户权限表

任何和所有的帮助将不胜感激:)

4

1 回答 1

2

您需要LEFT加入user_permissionstoauthorized_users和聚合:

SELECT p.permission_name, COUNT(u.permissions) counter
FROM user_permissions p LEFT JOIN authorized_users u
ON u.permissions & p.bits
WHERE p.app = 'app1'
GROUP BY p.permission_name
于 2021-07-07T12:31:01.290 回答