SQLite3查询特定元素无权限或权限符合条件的用户
SQLite3 查询符合权限条件的用户
完全可以实现,以下是对应的SQL查询语句:
SELECT users.* FROM users LEFT JOIN user_permissions ON users.id = user_permissions.user_id AND user_permissions.element_id = ? -- 替换为你指定的元素ID WHERE -- 情况1:用户无该元素的权限记录 user_permissions.user_id IS NULL OR -- 情况2:有记录,但can_read或can_edit为1,且can_manage不为1 (user_permissions.can_read = 1 OR user_permissions.can_edit = 1) AND user_permissions.can_manage != 1;
语句说明:
- 使用
LEFT JOIN关联用户表和权限表,确保即使用户没有对应元素的权限记录也能被查询到 ON子句里指定关联用户ID和目标元素ID,精准过滤出该元素的权限记录WHERE条件分两部分:- 当
user_permissions.user_id IS NULL时,说明该用户没有该元素的任何权限记录 - 当存在权限记录时,检查
can_read或can_edit为1,同时can_manage不等于1(括号确保OR逻辑优先执行,避免优先级问题)
- 当
如果需要调整返回的字段,只需修改SELECT后的内容即可。
内容的提问来源于stack exchange,提问作者maxischl
相关产品推荐
相关产品推荐

