mysql三表查询与多列合成一列

表结构

t_user表
mysql三表查询与多列合成一列_第1张图片
t_user_role表
mysql三表查询与多列合成一列_第2张图片
t_role表
mysql三表查询与多列合成一列_第3张图片

分析

一个用户对应一个或多个角色,但是user表和role表没有直接对应,对应关系在第三张表中

需求

查询user表中用户信息,并加上用户对应的所有角色名

sql语句

select a.*,GROUP_CONCAT(role_name) as role_name from t_user a
        LEFT JOIN t_user_role b ON a.id = b.user_id
        left JOIN t_role c ON b.role_id = c.id
        GROUP BY a.id

运行结果如下
mysql三表查询与多列合成一列_第4张图片
最后结果集中的role_name为字符串,返回后可以在前端用字符串分割的方法使用。

解析

GROUP_CONCAT函数可以实现将多列合成一列中,并且可以指定分隔符
后面则使用左查询和分组查询将三张表数据合在一起

你可能感兴趣的:(问题解决,mysql,数据库,sql)