MySQL中使用GROUP_CONCAT拼接数据后出现数据重复

MYSQL中GROUP_CONCAT用法

//基本用法
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator 分隔符])
通过 distinct可以去掉重复值,order by进行排序,separator指定分隔符,默认为逗号。
使用GROUP_CONCAT对吧。batch_name进行拼接数据
可以看出查询出来的值,经过分组后的batch_name里面的值出现重复,这是因为e表跟m,b表都是一对多的关系,这里关联了m表但是没有查m表中字段,是因为m表仅仅只是做条件查询的筛选条件
GROUP_CONCAT中可以使用distinct,对连接数据的字段进行去重
SELECT
	e.id,
	e.education_level AS educationLevel,
	e.status,
	e.updated AS adjustTime,
	e.remark,
	GROUP_CONCAT(distinct b.batch_name ) AS batchName
FROM
	t_b_training_education e
	LEFT JOIN t_b_training_education_major m ON m.education_id=e.id AND m.enable=1
	Left JOIN t_b_training_exam_batch b ON b.ceritificate_id = e.id AND b.`status`=1
where  
     e.`enable`=1
	and e.status=1
	GROUP BY 
	b.ceritificate_id,
	e.id,
	e.education_level,
	e.status,
	e.updated,
	e.remark
	ORDER BY e.updated DESC
查询结果如下
经验分享 程序员 微信小程序 职场和发展