我在 MySQL 中有三个不同的表:
给定一个用户 ID,我如何获取该用户的角色名称列表?例如 user_id = 1 我需要这样的列表 (1, deleteuser, modifyuser, viewuser)
如何构造我的 SQL 命令来获取这样的列表?
JOIN
这三个表是这样的:
SELECT
u.id,
r.Name
FROM user u
INNER JOIN user_role ur ON u.id = ur.user_id
INNER JOIN roles r ON ur.Role_id = r.id
WHERE u.id = Someid
但是,如果您希望将每个用户的角色列表连接成一个字符串。GROUP_CONCAT
像这样使用:
SELECT
u.id,
GROUP_CONCAT(r.Name) roles
FROM user u
INNER JOIN user_role ur ON u.id = ur.user_id
INNER JOIN role r ON ur.Role_id = r.id
WHERE u.id = 1
GROUP BY u.id
SELECT User_id, Name
FROM User_role
JOIN Role ON User_role.Role_id = Role.Id
WHERE User_id = '1'
这将创建一个这样的列表:
User_id | Name
1 | DeleteUser
1 | ModifyUser
1 | ViewUser
试试这个:
SELECT User_id, GROUP_CONCAT(r.Name)
FROM User_Role ur
INNER JOIN Role r ON ur.Role_id = r.Role_id
GROUP BY User_id;