请优化一下sqlSELECT u.username, u.email, r.role_name, r.role_id FROM ts_user_role ur LEFT JOIN ts_user u on u.user_id = ur.user_id left join ts_role r on ur.role_id = r.role_id WHERE u.del_flag = '0' AND u.user_id = ur.user_id AND ur.role_id = r.role_id 如果改用户拥有多个角色请显示到role_name中,没有角色则显示无
时间: 2024-03-09 07:50:28 浏览: 79
可以使用 GROUP_CONCAT 函数将多个角色名合并成一个字段,并使用 IFNULL 函数在没有角色时显示"无"。以下是优化后的 SQL 语句:
```
SELECT u.username, u.email, IFNULL(GROUP_CONCAT(r.role_name SEPARATOR ', '), '无') AS role_name
FROM ts_user_role ur
LEFT JOIN ts_user u ON u.user_id = ur.user_id
LEFT JOIN ts_role r ON ur.role_id = r.role_id
WHERE u.del_flag = '0' AND u.user_id = ur.user_id
GROUP BY u.user_id
```
这样就能将该用户拥有的所有角色名合并成一个字段并显示。
阅读全文