主页 > 知识库 > Mysql将查询结果集转换为JSON数据的实例代码

Mysql将查询结果集转换为JSON数据的实例代码

热门标签:地方门户网站 铁路电话系统 Linux服务器 网站排名优化 服务外包 AI电销 呼叫中心市场需求 百度竞价排名

Mysql将查询结果集转换为JSON数据 前言学生表学生成绩表查询单个学生各科成绩(转换为对象JSON串并用逗号拼接)将单个学生各科成绩转换为数组JSON串将数组串作为value并设置key两张表联合查询(最终SQL,每个学生各科成绩)最终结果

前言

我们经常会有这样一种需求,一对关联关系表,一对多的关系,使用一条sql语句查询两张表的所有记录,例:一张学生表,一张学生各科成绩表,我们想要用一条SQL查询出每个学生各科成绩;

学生表

CREATE TABLE IF NOT EXISTS `student`(
 `id` INT UNSIGNED AUTO_INCREMENT,
 `name` VARCHAR(100) NOT NULL
 PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO student( id, name ) VALUES ( 1, '张三' );
INSERT INTO student( id, name ) VALUES ( 2, '李四' );

学生成绩表

CREATE TABLE IF NOT EXISTS `score`(
 `id` INT UNSIGNED AUTO_INCREMENT,
 `name` VARCHAR(100) NOT NULL
 `student_id` INT(100) NOT NULL,
 `score` VARCHAR(100) NOT NULL
 PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO score( id, name, student_id, score) VALUES ( 1, '数学', 1, '95.5' );
INSERT INTO score( id, name, student_id, score) VALUES ( 2, '语文', 1, '99.5' );
INSERT INTO score( id, name, student_id, score) VALUES ( 3, '数学', 2, '95.5' );
INSERT INTO score( id, name, student_id, score) VALUES ( 4, '语文', 2, '88' );

查询单个学生各科成绩(转换为对象JSON串并用逗号拼接)

SELECT GROUP_CONCAT(JSON_OBJECT( 
'id',id,'name',name,'student_id',student_id, 'score', score)) as scores FROM scroe where student_id = 1;
## 查询结果
## {"id": 1, "name": "数学", "student_id": 1, "score": "95.5"},{"id": 2, "name": "语文", "student_id": 1, "score": "99.5"}

将单个学生各科成绩转换为数组JSON串

SELECT CONCAT('[', GROUP_CONCAT(JSON_OBJECT( 
'id',id,'name',name,'student_id',student_id, 'score', score)), ']') as scores FROM scroe where student_id = 1
## 查询结果
## [{"id": 1, "name": "数学", "student_id": 1, "score": "95.5"},{"id": 2, "name": "语文", "student_id": 1, "score": "99.5"}]

将数组串作为value并设置key

SELECT CONCAT('{"scoreData":[', GROUP_CONCAT(JSON_OBJECT( 
'id',id,'name',name,'student_id',student_id, 'score', score)), ']}') as scores FROM scroe where student_id = 1
## 查询结果
## {"scoreData": [{"id": 1, "name": "数学", "student_id": 1, "score": "95.5"},{"id": 2, "name": "语文", "student_id": 1, "score": "99.5"}]}

两张表联合查询(最终SQL,每个学生各科成绩)

SELECT id, name,
(SELECT CONCAT('[', GROUP_CONCAT(JSON_OBJECT( 
'id',id,'name',name,'student_id',student_id, 'score', score)), ']') as scores FROM scroe WHERE student_id = stu.id) AS scores
from student stu
## [{"id": 1, "name": "数学", "student_id": 1, "score": "95.5"},{"id": 2, "name": "语文", "student_id": 1, "score": "99.5"}]

最终结果

ID NAME SCORES
1 张三 [{“id”: 1, “name”: “数学”, “student_id”: 1, “score”: “95.5”},{“id”: 2, “name”: “语文”, “student_id”: 1, “score”: “99.5”}]
2 李四 [{“id”: 3, “name”: “数学”, “student_id”: 1, “score”: “95.5”},{“id”:4, “name”: “语文”, “student_id”: 1, “score”: “88”}]

到此这篇关于Mysql将查询结果集转换为JSON数据的文章就介绍到这了,更多相关mysql结果集转换json数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
  • 一篇文章弄懂MySQL查询语句的执行过程
  • 详解MySQL 查询语句的执行过程
  • Python使用sql语句对mysql数据库多条件模糊查询的思路详解
  • mysql查询的控制语句图文详解
  • 使用Visual Studio Code连接MySql数据库并进行查询
  • MySQL查询优化之查询慢原因和解决技巧
  • mysql聚合统计数据查询缓慢的优化方法
  • MySQL多表查询的具体实例
  • mysql从一张表查询批量数据并插入到另一表中的完整实例
  • 分析mysql中一条SQL查询语句是如何执行的

标签:黄山 湘潭 衡水 湖南 仙桃 铜川 崇左 兰州

巨人网络通讯声明:本文标题《Mysql将查询结果集转换为JSON数据的实例代码》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266