我想从权限表中找到具有所有给定权限的用户(userid)。 类似的东西:
选择userid,权限权限,其中包含all_of权限('view','delete','add','edit');
注意: 此查询与mysql权限无关。这是一个通用的问题,假设我有一个user_permissions表,其中包含以下字段&数据:
我问的查询应该返回
userid | permission
1 | view
1 | add
2 | view
2 | delete
2 | add
2 | edit
用户ID
2个
如果不清楚,请告诉我。
提前致谢
答案 0 :(得分:1)
查看
SELECT * FROM information_schema.user_privileges
WHERE grantee = '\'root\'@\'localhost\''
OR
SHOW GRANTS FOR 'root'@'localhost';
答案 1 :(得分:0)
select userid, GROUP_CONCAT(DISTINCT permissions ORDER BY permissions DESC) as permissions_grouped from permissions where permissions in ('view', 'delete', 'add', 'edit') GROUP BY userid HAVING permissions_grouped = "view,edit,delete,add";
这将首先获得具有任何这些权限的所有用户,然后将他们的所有权限连接到有序字符串,然后拥有只会选择具有正确字符串的行。
编辑:格式化
答案 2 :(得分:0)
你也可以这样做:
SHOW GRANTS FOR CURRENT_USER;