使用场景:两张表,人员表,教育经历表,通过表链接,查询一个人的教育经历。如果不使用group_concat的情况下,姓名列的数据会出现重复,如下:
姓名 学校
小虎 第三小学
小虎 初级中学
小虎 上海大学
而实际上,需要达到以下效果
姓名 学校
小虎 第三小学,初级中学,上海大学
这里使用
select temp.user_name as userName, group_concat(temp.school SEPARATOR '<>') as school from (select hub.user_name,hue.school_name from hr_user_basic hub inner join hr_user_edu hue on hub.id =hue.user_id) temp group by temp.user_name
首先通过表链接将人员与教育经历两表相连,作为一个子查询,在以姓名作为分组,然后将所有毕业学校通过group_concat合并为一行,并用SEPARATOR设置分隔符进行分隔,我这边为了明显是用的不等于号进行分隔的,大家可以根据喜好自选。