组合相同的行,mysql group_concat函数

语法
GROUP_CONCAT(
	[DISTINCT] 需要组合的行
    [ORDER BY] 排序
    [SEPARATOR 分隔符]
    );
表的基本信息

在这里插入图片描述

name为分组依据,将money 组合在一起
SELECT `name`,GROUP_CONCAT(money)
FROM money
GROUP BY `name`

group_concat(money) 表示组合money字段
没有 DISTINCT 表示不需要去重
没有指定order by 表示不需要排序
没有指定SEPARATOR 表示分隔符默认为逗号

查询结果
在这里插入图片描述

添加 DISTINCT

DISTINCT 表示去除重复

SELECT `name`,GROUP_CONCAT(DISTINCT money)
FROM money
GROUP BY `name`

查询结果
在这里插入图片描述

添加order by
SELECT `name`,GROUP_CONCAT(
	DISTINCT money 
	ORDER BY money DESC 
)
FROM money
GROUP BY `name`

注意
group_concat的排序是对进行组合的字段排序
这里是对money字段进行组合,所以对money排序有效,对name无效

注意下面四幅图的区别
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对name的排序应该在sql语句最后

SELECT `name`,GROUP_CONCAT(
	DISTINCT money 
	ORDER BY `money` DESC
)
FROM money
GROUP BY `name`
ORDER BY `name` DESC

查询结果
在这里插入图片描述

添加SEPARATOR

不添加,默认为逗号

SELECT `name`,GROUP_CONCAT(
	DISTINCT money 
	ORDER BY `money` DESC
	SEPARATOR '-'
)
FROM money
GROUP BY `name`
ORDER BY `name` DESC

查询结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值