如何在SQL中通过另一表查询结果获取指定用户可访问的组名
解决方案
要获取指定用户可访问的组名称,你需要将Permissions表和Groups表通过组ID关联起来——因为Permissions只存储组的ID,而组名称存在Groups表中。
正确的SQL查询语句
SELECT g.group_name FROM Permissions p INNER JOIN Groups g ON p.Groups_id = g.id WHERE p.PersId = 10001;
关键说明
- 表关联:用
INNER JOIN把两个表连接,关联条件p.Groups_id = g.id会将每条权限记录和对应的组信息匹配起来。 - 字段选择:直接指定
g.group_name就能只返回需要的组名称;如果需要同时显示组ID,可改成SELECT g.id, g.group_name。 - 用户过滤:通过
WHERE p.PersId = 10001筛选目标用户的权限记录,把10001替换成你要查询的用户ID即可。
原查询的问题修正
- 原查询只查询了
Permissions单表,没有关联存储组名称的Groups表,因此只能拿到组ID。 - 原语句里的
PersId.id是错误写法,Permissions表中存储用户ID的字段就是PersId,应该写成p.PersId(或直接Permissions.PersId)。
内容的提问来源于stack exchange,提问作者mohammad
相关产品推荐
相关产品推荐

