文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL多行合并--GROUP_CONCAT函数,转换json数组--JSON_ARRAY() 函数,转换json对象--json_object()函数

2023-09-03 22:21

关注

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) t1union allSELECT '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 allSELECT '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 allSELECT '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 allSELECT '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 allSELECT '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`;

来源地址:https://blog.csdn.net/zlfjavahome/article/details/129533187

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯