有三张桌子。
user_groups -用户群列表(admin,user,...)permissions -系统使用时的权限列表,例如"access_user_management"user_group_permissions -将用户组分配给权限)。例如,组"admin“具有权限"access_system”、"access_user_management“、"reset_system”,而组"user“仅具有权限access_user_management。现在,我想加入这三个表,根据用户组ID获得权限列表。
SELECT user_groups.user_group_id, user_group_permissions.permission_id, user_groups.name, permissions.name
FROM user_groups
INNER JOIN user_group_permissions
ON user_groups.user_group_id = user_group_permissions.user_group_id
INNER JOIN permissions
ON user_group_permissions.permission_id = permissions.permission_id
WHERE user_groups.user_group_id = 1
ORDER BY user_groups.user_group_id我的查询运行良好,但我想使用别名来简化。不幸的是化名不起作用。
SELECT user_groups.user_group_id, user_group_permissions.permission_id, user_groups.name, permissions.name
FROM user_groups ug
INNER JOIN user_group_permissions ugp
ON ug.user_group_id = ugp.user_group_id
INNER JOIN permissions per
ON ugp.permission_id = per.permission_id
WHERE ug.user_group_id = 2
ORDER BY ug.user_group_id但是,会引发以下错误:
错误代码: 1054。“字段列表”中未知列“user_groups.user_group_id”.
这与我在教程中看到的别名语法完全相同。也尝试了as,但这也是不起作用的。
有人知道为什么化名不起作用吗?我使用的是MySQL社区服务器8.0.28。
发布于 2022-02-03 12:25:32
如果要为表使用别名,则必须将表名的每个实例替换为上述别名(当然,设置别名的位置除外)。
如下所示:
SELECT ug.user_group_id, ugp.permission_id, ug.name, per.name
FROM user_groups ug
INNER JOIN user_group_permissions ugp
ON ug.user_group_id = ugp.user_group_id
INNER JOIN permissions per
ON ugp.permission_id = per.permission_id
WHERE ug.user_group_id = 2
ORDER BY ug.user_group_idhttps://stackoverflow.com/questions/70971219
复制相似问题