sql查询将多个结果合并成一个字符串

来源:互联网 发布:iPad看视频软件 编辑:程序博客网 时间:2024/06/08 16:54

1.user表:

id      name    roles1       张三      null2       李四      null3       王五      null

2 role表

id      name1       管理员2       业务员3       工程师

3 user_role表

user_id     role_id1               12               22               33               3

4.查询sql
说明:group_concat(),该函数返回带有来自一个组的连接的非NULL值的字符串结果。

SELECT    u.`name` AS username,    GROUP_CONCAT(r.`name`) rolenameFROM    `user` u,    role r,    user_role urWHERE    u.id = ur.user_idAND r.id = ur.role_idGROUP 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`) bSET a.roles = b.rolenameWHERE    a.id = b.id;
原创粉丝点击