当前位置: 首页 > news >正文

了解MySQL中的JSON_ARRAYAGG和JSON_OBJECT函数

在MySQL数据库中,JSON格式的数据处理已经变得越来越常见。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它可以用来存储和表示结构化的数据。MySQL提供了一些功能强大的JSON函数,其中两个关键的函数是JSON_ARRAYAGG和JSON_OBJECT。本文将深入探讨这两个函数的用途、语法和示例,以帮助您更好地理解它们的功能和用法。

JSON_ARRAYAGG函数

JSON_ARRAYAGG函数用于将查询结果中的多个行合并为一个JSON数组。这对于在一个查询中汇总多个行的数据非常有用。以下是JSON_ARRAYAGG函数的基本语法:

JSON_ARRAYAGG(expression)
  • expression:要包含在数组中的表达式或列。

示例

我们可以使用JSON_ARRAYAGG函数将com_province 表中所有的省份名称合并为一个JSON数组:

# 查询省份表中所有的省份名称的JSON数组
select JSON_ARRAYAGG(province_name ) from com_province;

这将返回一个包含31省份的JSON数组:

["北京", "天津", "河北省", "山西省", "内蒙古自治区", "辽宁省", "吉林省", "黑龙江省", "上海", "江苏省", "浙江省", "安徽省", "福建省", "江西省", "山东省", "河南省", "湖北省", "湖南省", "广东省", "广西壮族自治区", "海南省", "重庆", "四川省", "贵州省", "云南省", "西藏自治区", "陕西省", "甘肃省", "青海省", "宁夏回族自治区", "新疆维吾尔自治区"]

JSON_OBJECT函数

JSON_OBJECT函数用于创建一个JSON对象,其中包含指定的键值对。这对于生成包含特定数据的JSON对象非常有用。以下是JSON_OBJECT函数的基本语法:

JSON_OBJECT(key1, value1, key2, value2, ...)
  • key1, value1, key2, value2, ...:键值对,键是字符串,值可以是任何有效的表达式。

示例:

使用JSON_OBJECT函数创建一个包含省份名称和省份编码的JSON对象

# 使用JSON_OBJECT函数创建一个包含省份名称和省份编码的JSON对象
select JSON_OBJECT('省份名称',province_name,'省份编码',province_code ) from com_province;

image

 

实战示例

我们有三张表,分别存储省份信息、地市信息和行政区信息,现在需要给客户端提供一个省市区的json数据,我们就可以使用JSON_ARRAYAGG 和 JSON_OBJECT 完成:

SELECTJSON_ARRAYAGG(JSON_OBJECT('code',T1.province_code,'name',T1.province_name,'children',(SELECTJSON_ARRAYAGG( JSON_OBJECT( 'code', T2.city_code, 'name', T2.city_name,'children',(SELECTJSON_ARRAYAGG( JSON_OBJECT( 'code', T3.area_code, 'name', T3.area_name ) ) AS test3 FROMcom_area T3 WHERET3.city_code = T2.city_code ORDER BY T3.sort asc) ) ) AS test2 FROMcom_city T2 WHERET2.province_code = T1.province_code  ORDER BY T2.sort asc) ) ) AS test 
FROMcom_province T1   ORDER BY  T1.sort asc

 

http://www.jsqmd.com/news/54309/

相关文章:

  • 2025全年套管、绝缘套管、热收缩套管、热缩套管、热缩管厂家综合推荐与选购指南
  • Java 并发编程的演进与实践:从线程到虚拟线程的新时代
  • MySQL的IFNULL()、ISNULL()、NULLIF()函数用法说明
  • WebMvcConfig 和 WebSecurityConfig 详解 - 实践
  • Jenkins 已成过去式!新兴替代软件GitHub Actions即将崛起
  • P12828
  • XYD11.25模拟赛
  • HTML---------------示例代码(1)
  • xenomai3 pcie网卡偶发性的oops
  • OOP-实验4 - FF
  • day13-影刀RPA01
  • 6001 week1
  • 11月28日总结 - 作业----
  • P10055
  • P10704
  • P8617
  • P2754
  • P2474
  • RAG的17种方式搭建方式研究
  • 英语_阅读_Reality shows_待读
  • 2025.11.28博客
  • P3825
  • P11261
  • P10173
  • HTML表格列表
  • 实用指南:预测市场——polymarket:人类信号的回潮与金融权力的新边界
  • windows docker cpu和内存占用
  • NGINX 负载均衡应用实战:从配置到策略的深度解析 - 实践
  • 域控一些常用的命令学习记录
  • 全球首个语音 AI 广告平台问世;Sam Altman 与 Jony Ive:合作新硬件将「如湖畔山间小屋般平静」丨日报