深入了解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;

实战示例
我们有三张表,分别存储省份信息、地市信息和行政区信息,现在需要给客户端提供一个省市区的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
结果:

结论
JSON_ARRAYAGG和JSON_OBJECT是MySQL中处理JSON数据的强大工具。JSON_ARRAYAGG用于合并多个行的数据为一个JSON数组,而JSON_OBJECT用于创建包含键值对的JSON对象。这些函数可以帮助您在数据库中更有效地操作和查询JSON数据,从而满足各种需求。无论您是在开发Web应用程序还是进行数据分析,了解如何使用这些函数都将对您的工作非常有帮助。希望本文对您深入了解JSON_ARRAYAGG和JSON_OBJECT函数有所帮助。
相关文章:
深入了解MySQL中的JSON_ARRAYAGG和JSON_OBJECT函数
在MySQL数据库中,JSON格式的数据处理已经变得越来越常见。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它可以用来存储和表示结构化的数据。MySQL提供了一些功能强大的JSON函数,其中两个关键的函数是…...
Ubuntu22.04开启后屏幕黄屏
1. 故障现象 系统:Ubuntu22.04 现象:电脑从开机到进入桌面一直屏幕黄屏 2. 故障分析 可能为屏幕色彩调节出现故障 3. 解决方案 系统设置——》色彩——》删除原来的配置(remove profile)——》添加配置Colorspace:Compatibl…...
华为云云耀云服务器L实例评测 | 搭建docker环境
目录 🍒docker的概念 🍒Docker 的优点 🫐1、快速,一致地交付您的应用程序 🫐2、响应式部署和扩展 🫐3、在同一硬件上运行更多工作负载 🍒云耀云服务器L实例 🫐产品优势 🥝…...
exesql=“UPDATE test set date=‘%s‘“ % date 是啥意思
这段代码是 Python 中的字符串格式化语法。让我们逐步解释它的含义: exesql "UPDATE test set date%s": 这是一个字符串赋值语句,将一个 SQL 更新语句赋值给 exesql 变量。SQL 更新语句是用于更新数据库表中的数据的语句。这个更新语句的目标…...
请体验一下falcon 180b 大语言模型的感觉
引言 由Technology Innovation Institute(T四训练的开源大模型Falcon 180B登陆Hugging Face!Falcon180B为开源大模型树立了全新的标杆。作为当前最大的开源大模型,有l80B参数并且是在在3.5万亿token的TII RefinedWeb数据集上进行训练,这也是目前…...
今晚8点,iPhone15开启预售
北京时间9月15日晚8点,备受全球果粉期待的苹果iPhone15系列手机正式开启预售。此次预售在苹果官网Apple Store在线商店、天猫Apple Store官方旗舰店以及Apple Store官方在线商店微信小程序同步进行。 今年苹果公司将Apple Store在线商店、天猫Apple Store官方旗舰店…...
Meetup 回顾|Data Infra 研究社第十五期(含资料发布)
本文整理于上周六(9月09日)Data Infra 第 15 期的活动内容。本次活动由 Databend 研发工程师-韩山杰为大家带来了一场主题为《Databend 数据集成方案》的分享,让我们一起回顾一下吧~ 以下是本次活动的相关文字、视频及资料: 通过…...
I2S/PCM知识点记录
目录 1.常见的音频采样率有两类,一类是48K domain,另一类是44.1KHz domain 2.常见采样深度 【即单声道和单slot位宽】8/12/16/24/32 bit 3.帧结构 4.I2S/PCM允许实际有效采样位宽比传输的位宽小 5.ddr存储对齐 6.sclk和mclk以及adifclk的产…...
微信小程序——使用 Vant 组件实现 Popup 弹出层(各位置弹出详细代码分享)
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
linux查看python的py文件的命令
在 Linux 中,要查看 Python 的 .py 文件内容,可以使用以下几种命令: 使用 cat 命令: cat /path/to/your_python_file.py cat 命令用于显示文件内容,将会在终端输出整个 .py 文件的内容。 使用 less 命令:…...
开源库源码分析:Okhttp源码分析(一)
开源库源码分析:OkHttp源码分析 导言 接下来就要开始分析一些常用开源库的源码了,作为最常用的网络请求库,OkHttp以其强大的功能深受Android开发者的喜爱(比如说我),还有对该库进行二次封装而成的热门库&a…...
无涯教程-JavaScript - LOOKUP函数
描述 需要查看单个行或一列并从第二行或第二列的同一位置查找值时,请使用LOOKUP函数。使用"查找"功能搜索一行或一列。 使用VLOOKUP函数可搜索一行或一列,或搜索多行和多列(如表)。它是LOOKUP的改进版本。 有两种使用LOOKUP的方法- 矢量形式 − Use this form of…...
这所院校太好考了!地处魔都!不要错过!
一、学校及专业介绍 上海电力大学(Shanghai University of Electric Power),位于上海市,是中央与上海市共建、以上海市管理为主的全日制普通高等院校,是教育部首批“卓越工程师教育培养计划”试点院校、上海高水平地方…...
Python - PyQt6、QDesigner、pyuic5-tool 安装使用
Python 开发可视化界面可以使用原生的 tkinter,但是原生框架使用起来颇为不方便,所以最流行的还是QT UI框架,QT是使用C语言开发,Python 想使用需要对其进行封装,所以就出现了PyQt框架,这个框架使用极其方便…...
C语言——指针进阶(三)
目录 一.前言摘要 二.排序函数qsort的模拟实现 三.指针和数组笔试题解析 一.前言摘要 讲述关于strlen和sizeof对于各种数组与指针的计算规则与用法。另外还有qsort函数的模拟实现(可以排序任意类型变量) 二.排序函数qsort的模拟实现 目标:…...
三勾商城(java+vue3)微信小程序商城+SAAS+前后端源码
项目介绍 本系统功能包括: 前台展示后台管理SAAS管理端,包括最基本的用户登录注册,下单, 购物车,购买,结算,订单查询,收货地址,后台商品管 理,订单管理&…...
【洁洁送书第七期】现在学 Java 找工作还有优势吗
java 现在学 Java 找工作还有优势吗?活力四射的 JavaTIOBE 编程语言排行榜从零开始学会 JavaJava 语言运行过程基础知识进阶知识高级知识talk is cheap, show me the code结语 文末赠书 现在学 Java 找工作还有优势吗? 在某乎上可以看到大家对此问题的…...
npm发布自定义vue组件库
npm发布自定义vue组件库 创建项目 vue create test-ui自定义组件 创建自定义组件,组件名称根据你的需求来,最好一个组件一个文件夹,下图是我的示例。 src/components 组件和你写页面一样,所谓组件就是方便实用,不用…...
9.12 C++作业
实现一个图形类(Shape),包含受保护成员属性:周长、面积, 公共成员函数:特殊成员函数书写 定义一个圆形类(Circle),继承自图形类,包含私有属性:半…...
利用LinuxPTP进行时间同步(软/硬件时间戳) - 研一
转自:https://blog.csdn.net/BUPTOctopus/article/details/86246335 官方文档:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/s1-using_ptp 查看网卡是否支持软硬件时间戳: sudo ethtoo…...
FPGA仿真入门:手把手教你配置Quartus Prime 21.1里的Questa Starter版(附12个月免费许可攻略)
FPGA仿真工具链实战:从Questa Starter许可申请到Quartus Prime深度集成 当数字逻辑设计从纸上谈兵进入硬件实现阶段,仿真验证便成为FPGA开发流程中不可逾越的质量关卡。作为Intel FPGA生态中的黄金搭档,Quartus Prime与Questa的协同工作能帮助…...
node.js、node、nvm、npm、npx的关系
1、node.js Node.js:一个基于Chrome V8引擎的JavaScript运行环境。Node.js是一个开源的、跨平台的JavaScript运行环境,用于在服务器端运行JavaScript代码。它使得开发人员可以使用JavaScript来编写服务器端应用程序,从而简化了开发过程&#…...
HoRain云--Lua table核心机制与高效实践
🎬 HoRain云小助手:个人主页 🔥 个人专栏: 《Linux 系列教程》《c语言教程》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!…...
别再让图片拖慢你的Unity项目!手把手教你用AssetPostprocessor搞定尺寸与压缩
Unity项目性能优化:智能图片处理全攻略 1. 为什么图片处理对Unity项目至关重要 在Unity开发过程中,图片资源往往是项目体积膨胀的罪魁祸首。一个中型项目可能包含数千张纹理,如果不加控制,这些资源会迅速吞噬内存和存储空间。更糟…...
Linux 系统运行速度慢有哪些排查方法?
Linux 系统变慢通常是资源供需失衡导致的,建议按 CPU、内存、磁盘 I/O、网络的顺序依次排查,优先使用 top、free、iostat 等基础命令定位瓶颈。 先说结论:系统卡顿本质是核心资源被过度占用,需先定位具体瓶颈资源,再针…...
HiveWE:现代魔兽争霸III地图编辑器终极指南
HiveWE:现代魔兽争霸III地图编辑器终极指南 【免费下载链接】HiveWE A Warcraft III world editor. 项目地址: https://gitcode.com/gh_mirrors/hi/HiveWE 还在为魔兽争霸III原版地图编辑器的缓慢加载和复杂操作而烦恼吗?HiveWE作为一款专注于速度…...
终极指南:在Windows上免模拟器安装安卓应用的创新方案
终极指南:在Windows上免模拟器安装安卓应用的创新方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer APK Installer 是一款专为Windows系统设计的安卓应用…...
Python 异步HTTP客户端实战:aiohttp深度解析
Python 异步HTTP客户端实战:aiohttp深度解析 引言 在现代Python后端开发中,异步HTTP客户端是构建高性能服务的关键组件。作为一名从Rust转向Python的后端开发者,我深刻体会到异步编程在处理大量并发请求时的优势。aiohttp作为Python生态中最流…...
VS2019编译OpenSceneGraph 3.6.5踩坑全记录:从CMake配置到解决第三方库缺失
VS2019编译OpenSceneGraph 3.6.5实战避坑指南 第一次在Windows平台用VS2019编译OpenSceneGraph 3.6.5时,我原以为按照官方文档就能轻松搞定。直到CMake报出一连串第三方库缺失的红色警告,才意识到这趟编译之旅远没有想象中简单。如果你也正对着Could NOT…...
不只是显示中文:用fbterm给你的CentOS终端换个‘皮肤’,提升老旧服务器运维效率
终端美学革命:用fbterm打造高效CentOS字符界面工作环境 在服务器运维的世界里,图形界面往往被视为奢侈品。当您面对一台资源受限的老旧CentOS服务器,或者需要远程管理没有X11支持的机器时,字符界面就成了唯一的选择。但单调的终端…...
