gpt4 book ai didi

php - Mysql Join,检查用户是否有/没有权限

转载 作者:行者123 更新时间:2023-11-29 05:38:30 25 4
gpt4 key购买 nike

尝试通过单个查询来执行此操作,但想要获得有权执行 x 的所有用户的列表。这涉及到用户表和权限表。但看起来我使用的任何连接都不关心 where 语句(因为用户通常在表中有另一个权限)

SELECT DISTINCT `u`.*
FROM (`system_users` AS u)
JOIN `system_user_permissions` AS p ON `u`.`id` = `p`.`user`
WHERE `p`.`permission` != 2
AND `p`.`permission` != 3

我有大约 3900 个用户,我应该接收到大约 2000 个与权限 id 2 或 3 无关的用户。但仍然得到 3900 问题是因为用户也可能与权限 1、5、6.. . 将它们组合在一起后,它们仍然会被放入列表中。

有什么建议吗?


更新查询,但仍然没有运气。如果我为没有得到 2 或 3 的每个输出“权限”,则列出的用户仍然可能在那里拥有该权限

SELECT DISTINCT `u`.*, `p`.`permission`
FROM (`system_users` AS u)
INNER JOIN `system_user_permissions` AS p ON `u`.`id` = `p`.`user`
WHERE `p`.`permission` NOT IN (2, 3)

成功了:

SELECT * FROM system_users AS u 
WHERE NOT EXISTS(
SELECT 1 FROM system_user_permissions AS p
WHERE u.id = p.user
AND p.permission IN (2,3)
)

最佳答案

你想要不存在:

select
*
from
system_users u
where
not exists (
select
1
from
system_user_permissions p
where
p.id = u.user
and p.permission in (2,3)
)

您的所有原始查询都在否定任何具有 权限 2 或 3,而不是 1、2 和 5(这正是您想要的)权限的用户。一旦在该用户的 system_user_permissions 中找到权限 2 或 3,不存在 就会将该用户排除在外。

关于php - Mysql Join,检查用户是否有/没有权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8681792/

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