1.user表:
id name roles
1 张三 null
2 李四 null
3 王五 null
2 role表
id name
1 管理员
2 业务员
3 工程师
3 user_role表
user_id role_id
1 1
2 2
2 3
3 3
4.查询sql
说明:group_concat(),该函数返回带有来自一个组的连接的非NULL值的字符串结果。
SELECT
u.`name` AS username,
GROUP_CONCAT(r.`name`) rolename
FROM
`user` u,
role r,
user_role ur
WHERE
u.id = ur.user_id
AND r.id = ur.role_id
GROUP BY
u.`name`
5.结果
username rolename
张三 管理员
李四 工程师,业务员
王五 工程师
6.用一段SQL,把用户 的所有角色的角色名更新到用户表的roles字段
UPDATE `user` a,
(
SELECT
u.id,
u.`name` AS username,
GROUP_CONCAT(r.`name`) rolename
FROM
`user` u,
role r,
user_role ur
WHERE
u.id = ur.user_id
AND r.id = ur.role_id
GROUP BY
u.`name`
) b
SET a.roles = b.rolename
WHERE
a.id = b.id;