MySQL多行合并--GROUP_CONCAT函数,转换json数组--JSON_ARRAY() 函数,转换json对象--json_object()函数
迪丽瓦拉
2024-06-03 17:02:23
0次

GROUP_CONCAT: 多行合并

在表设计中,一个字段可能会对应多条数据,但在有的查询场景下,需要实现将多行数据合并成一行数据,在MySQL中可以使用GROUP_CONCAT函数来实现

id

pid

name

2

1

篮球

3

1

足球

正常查出来是两条数据,如果需要一条,就可以用GROUP_CONCAT

GROUP_CONCAT(field1)这样默认就是一个字段用逗号拼接

select pid ,GROUP_CONCAT(name) from table,结果就是

pid

name

1

篮球,足球

GROUP_CONCAT(field1,'-',field2)这样默认就是两个个字段用-拼接

select pid ,GROUP_CONCAT(id,'-',name) from table,结果就是

pid

name

1

2-篮球,3-足球

json_object: 创建Json对象

如果要将查出来的字段转换成json对象,可以用这个函数:JSON_OBJECT('id',id,'name',name)

select pid ,JSON_OBJECT('id',id,'name',name) from table,结果就是

pid

name

1

{"id": 2, "name": "篮球"}

1

{"aid": 3, "name": "足球"}

json_array:创建Json数组

如果要将查出来的字段转换成json数组,可以用这个函数:json_array(id,name)

select pid ,JSON_ARRAY(id,name) from table,结果就是

pid

name

1

[2, "篮球"]

1

[3, "足球"]

这就是最简单的使用方法了,当然了,大家可以继续深化使用,

比如JSON_ARRAY(JSON_OBJECT('id',id,'name',name) )

比如 GROUP_CONCAT(JSON_OBJECT('id',id,'name',name))

等等

放一个例子:

select `key`, json_array(GROUP_CONCAT(JSON_OBJECT('name', name, 'aid', aid,'preview_address',preview_address,'whether_receive',whether_receive,'free_or_not',free_or_not)))  as res from (
SELECT 'templateList' as `key`,aid,template_name as `name`,preview_address ,whether_receive,free_or_not from 
(SELECT * FROM lb_free_template_material ORDER BY create_time DESC LIMIT 12) t1
union all
SELECT 'stickerList' as `key`,aid,sticker_name as `name`,preview_address ,whether_receive,free_or_not from 
(SELECT * FROM lb_free_sticker_material ORDER BY create_time DESC LIMIT 12) t2  
union all
SELECT 'fontList' as `key`,aid,font_name as `name`,preview_address ,whether_receive,free_or_not from 
(SELECT * FROM lb_free_font_material ORDER BY create_time DESC LIMIT 12) t3   
union all
SELECT 'brushList' as `key`,aid,brush_name as `name`,preview_address ,whether_receive,free_or_not from 
(SELECT * FROM lb_free_brush_material ORDER BY create_time DESC LIMIT 12) t4    
union all
SELECT 'dynamicList' as `key`,aid,dynamic_effect_name as `name`,preview_address ,whether_receive,free_or_not from 
(SELECT * FROM lb_free_dynamic_material ORDER BY create_time DESC LIMIT 12) t5   
union all
SELECT 'backgroundList' as `key`,aid,background_name as `name`,preview_address ,whether_receive,free_or_not from 
(SELECT * FROM lb_free_background_material ORDER BY create_time DESC LIMIT 12) t6  ) t group by  `key`;

相关内容

热门资讯

中英旅游,向文化体验更深处去 在英国泰晤士河畔,议会大厦、大本钟前,举着手机拍照的中国游客络绎不绝。有人拿出封面印有大本钟照片的高...
成都高新区“欢庆国庆·艺彩芳华... 封面新闻记者 易弋力10月5日,由成都高新区商务文化旅游局指导的“欢庆国庆·艺彩芳华”2026年高新...
花溪湖:山水之间见证城市蝶变 如今的花溪湖,波光潋滟,草木环生,已然是市民闲暇时散心休闲的好去处。岁月流转,这片水域迎来全新的蜕变...
单日游客突破2000人次!X科... 国庆假期进入第四天,位于经济区的X科幻谷·星际未来园区客流持续攀升,单日游客接待量突破2000人次,...
不夜重庆·打卡夜经济地标丨夜购... 编者按:夜经济,是城市活力的鲜活底色,也是重庆聚力建设国际消费中心城市的新引擎。国庆假期,上游新闻推...
10月1日至4日,湖北A级旅游... 10月4日晚,湖北省文化和旅游厅公布2026年国庆节第四天全省假日文旅市场情况:全省大部分地区天气由...
辽宁朝阳文旅赴京,邀请北京游客... 10月3日,正值国庆黄金周出游热潮高涨之际,辽宁省朝阳市文化旅游和广播电视局携全域优质文旅资源、特色...
“千万年薪招聘NPC”冲上热搜... 山西晋城司徒小镇豪掷3000万,计划招聘百名NPC(非玩家角色),最高开出千万年薪,凭借短视频热度未...
1390岁的塔长啥样?主播带你... 现代快报讯(记者 姜振军)“屏幕前的朋友们大家好,我是果果!”“大家好,我是提子!”10月4日下午,...
江苏淮安:老厂房变身国庆文旅新...   国庆期间,江苏省淮安市清江浦区红旗纸箱厂老厂房经改造,成为复古工业主题沉浸式互动剧场,上演沉浸式...