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

本文介绍了MySQL中的GROUP_CONCAT函数,用于在分组查询中合并多个记录的某个字段值,并展示了如何使用DISTINCT去除重复值,使用ORDER BY进行排序,以及设置自定义分隔符。示例查询从t_b_training_education表开始,通过LEFT JOIN关联了其他表,并在查询结果中去重并按时间降序排列了batch_name。
摘要由CSDN通过智能技术生成

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表仅仅只是做条件查询的筛选条件

可以看出,查询出来的值,经过分组后的batch_name里面的值出现重复,这是因为饿表跟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
查询结果如下

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值