假设user表的主键是user_id,group表的主键是group_id,right表的主键是right_id。

首先,我们需要找到具有全部权限的right_id列表。可以通过以下SQL语句实现:

SELECT right_id
FROM right

假设我们得到的全部权限的right_id列表是 [1, 2, 3]。

接下来,我们可以通过以下SQL语句来找到具有全部权限的user_id:

SELECT user_id
FROM user
WHERE user_id IN (
  SELECT user_id
  FROM user_group
  WHERE group_id IN (
    SELECT group_id
    FROM group_right
    WHERE right_id IN (1, 2, 3)
    GROUP BY group_id
    HAVING COUNT(DISTINCT right_id) = 3
  )
)

注意,这里的3是指全部权限的数量,如果全部权限的数量变化,需要相应地修改SQL语句中的数字。

这样,就可以得到具有全部权限的user_id列表

有一张user表一张group表一张user跟group的关联表user_groupuser_group表通过user跟group两张表id数据做关联一张right表一张group_right表roup_right表通过right表跟group表id数据做管理。现有user表id的列表数据和right表的权限列表数据需要编写sql过滤出有全部权限的userid

原文地址: https://www.cveoy.top/t/topic/iZfQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录