了解MySQL中的JSON_ARRAYAGG和JSON_OBJECT函数

news/2025/11/28 19:41:49/文章来源:https://www.cnblogs.com/lgx5/p/19284006

在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.mzph.cn/news/980039.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025全年套管、绝缘套管、热收缩套管、热缩套管、热缩管厂家综合推荐与选购指南

摘要 随着新能源、智能制造等行业的快速发展,热收缩套管作为重要的绝缘保护材料,在2025年迎来更广阔的应用前景。本文基于行业发展趋势和用户实际需求,整理了五家值得关注的热收缩套管品牌(排名不分先后),重点推…

Java 并发编程的演进与实践:从线程到虚拟线程的新时代

在所有主流编程语言中,Java 的并发模型可以说是发展最完整、体系最严谨的一类。从早期的 Thread、Synchronized,到后来的 java.util.concurrent、Fork/Join,再到 Java 21 正式引入的虚拟线程(Virtual Threads),J…

MySQL的IFNULL()、ISNULL()、NULLIF()函数用法说明

1、IFNULL() 函数 MySQL IFNULL 函数是 MySQL 控制流函数之一。 它有两个参数,第一个参数不为 NULL 时返回。 否则,IFNULL 函数返回第二个参数。 这两个参数可以是文字值或表达式。IFNULL(expression1,expression2);…

WebMvcConfig 和 WebSecurityConfig 详解 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Jenkins 已成过去式!新兴替代软件GitHub Actions即将崛起

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

P12828

神秘啊 \(x\oplus y=gcd(x,y)\) 发现,当 \(x<y\) 时,\(x\oplus y\ge y-x\ge gcd(x,y)\) 那么我们这个条件就限定了上面这 \(3\) 个东西相等,记为 \(d\) \(y-x=d\) 且 \(gcd(x,y)=d\) 那么设 \(x=kd\),\(y=kd+d\…

XYD11.25模拟赛

madoka 和 homura,圆神场! T1: 显而易见的是,我们最终两个人吃的 pocky 是序列的左右两段,但是这个贡献可能是负的,所以就不能贪心来优化状态了。容易感受到,这题很纯粹。 设 \(dp[l][r][k][0/1]\),第三维是根号…

HTML---------------示例代码(1)

<!DOCTYPE html> <html><head><meta charset="utf-8"><title>童心少年</title></head><body> <table border="1"><tr><td>…

xenomai3 pcie网卡偶发性的oops

待解决 报错截图[ 1954.723628] ------------[ cut here ]------------ [ 1954.723658] NETDEV WATCHDOG: enp6s0 (r8168): transmit queue 0 timed out [ 1954.723695] WARNING: CPU: 5 PID: 0 at net/sched/sch_gene…

OOP-实验4 - FF

实验任务1 源代码task11 // 类GradeCalc声明2 3 #pragma once4 5 #include <vector>6 #include <array>7 #include <string>8 9 class GradeCalc 10 { 11 public: 12 GradeCalc(const std::stri…

day13-影刀RPA01

今日内容 1 RPA介绍 1.1 RPA是什么 # 1 RPA(Robotic Process Automation,机器人流程自动化[自动化流程机器人])是一种通过软件机器人(或称为 “数字员工”)模拟人类在计算机上的操作行为,来自动执行重复性、规则…

11月28日总结 - 作业----

11月28日总结写机器学习作业

6001 week1

🔰 开始第 1 章:AI、机器学习、数据科学(中英文对照) (内容来自 PDF、录播1、课前预习全部相关段落)第 1 章:AI、机器学习与数据科学 Chapter 1: AI, Machine Learning, and Data Science1.1 什么是数据科学?…

TDengine IDMP “无问智推”:克服工业智能化“信息沉睡”难题的利器

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

P10055

好像和我们模拟赛T2很像啊hhh。 我们还是考虑 \(AB\) 连续段这种东西。 我们 \(2,3\) 的连续段能组成多少种长度的呢? \(2,3\) 可以,之后我们全部都用 \(2\),这样我们就可以消掉除了长度 \(>1\) 的所有连续段了。…

2025-11-28 如何更换power shell背景颜色(deepseek)

好的,更换 PowerShell 的背景颜色非常简单,主要有两种方法:一种是临时性的(仅对当前窗口有效),另一种是永久性的(通过修改配置文件)。 方法一:临时更改(通过属性设置) 这种方法最简单直观,但关闭窗口后再次…

Hikvision 考勤机数据提取(2)

import xml.etree.ElementTree as ET import requests from requests.auth import HTTPDigestAuth import json import sys import hashlib import base64 import timedef get_random():timestamp = str(int(time.ti…

P8868

询问所有区间的最大值乘积之和,这个也是好人,自然溢出取模。 考虑一次询问怎么做。我觉得从区间的角度来考虑这个东西还是蛮困难的,枚举两边的人,考虑他们两能成为几次乘积。用单调栈搞出管辖区间。首先双方的管辖…

XYD11.27模拟赛

欸,最后一场模拟赛了是吧,无话可说啊 T1: \(sum[r]^sum[r1]=sum[l-1]^sum[l1-1]\) 看到异或,想到拆位吧 考虑我们怎么快速知道上面的异或和,拆位之后我们就知道了每个二进制在中间出现了多少次? 这样是不是可以分…

P10704

对于下取整,我们有多种处理的手法。 \(\sum_{i=1}^{n}\sum_{j=1}^{n} \lfloor\frac{\lfloor{\frac{n}{a_i}\rfloor}}{a_j}\rfloor\) 开一个桶,然后本质不同的 \(a\) 只会有 \(\sqrt{1e9}\) 个。 \(\sum_{i=1}^{n}\su…