mysql group_concat 拼接字段

本文介绍如何使用SQL的GroupConcat函数将多个字段值拼接并分组显示,通过具体实例展示了如何将同一ID下不同课程的成绩整合到一行,提高数据展示效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在公司,接到一个需求,还没有动手的时候,觉得好难,做不出来的感觉。需求是把两个字段的值显示在一个格子里。并且以id的形式分组。花了10多分钟,把效果实现了,才发现原来这么简单。

一、创建数据库以及插入数据

create database student    #创建数据库 student

create table user(        #创建表 user
id int ,
name varchar(20) not null,
course varchar(20) not null 
)                       
insert into user values(1,'小明','语文')    #插入数据

insert into user values(1,'小明','数学')

insert into user values(1,'小明','英语')

insert into user values(2,'小张','化学')

insert into user values(2,'小张','地理')

insert into user values(2,'小张','语文')

user表
二、group_concat的语法

语法如下:

group_concat([distinct] 要连接的字段 [order asc/desc 排序字段] [separator '分隔符'])

三、通过group_concat拼接两个字段

我想把两个字段的值显示在一个格子里。并且把字段名也要显示出来。以id的形式分组。

代码如下:

select 
u.id,
group_concat(distinct u.`name`,':',u.course separator ',           ') as  拼接姓名和成绩
from `user` u
where
1=1
group by u.id

记得在字段前面加上distinct 去重,否则字段会出现重复的

拼接效果如下:
在这里插入图片描述
四、总结
group_concat可以多个字段拼接,并且可以进行分组。字段与字段之间可以用分隔符隔开。为了美观,我在separator的分隔符后面加了很多空格。看起来更加舒服、整齐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值