mysql xml转换json(Mysql将查询结果集转换为JSON数据的实例代码)
类别:数据库 浏览量:2369
时间:2021-10-25 10:36:48 mysql xml转换json
Mysql将查询结果集转换为JSON数据的实例代码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数据内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
原文链接:https://blog.csdn.net/weixin_39157014/article/details/113989085
您可能感兴趣
- mysql有哪些约束(MySQL完整性约束的定义与实例教程)
- 图片如何存放在mysql中(将图片保存到mysql数据库并展示在前端页面的实现代码)
- mysql多表连接优化(浅谈Mysql多表连接查询的执行细节)
- 阿里云mysql配置升级注意事项(详解如何在阿里云上安装mysql)
- mysql自定义安装教程5.7(MySQL系列-源码编译安装v5.7.34)
- mysql创建表存在哪里(MySQL的表空间是什么)
- mysql dateformat(MySQL的DATE_FORMAT函数的使用)
- mysql里修改密码命令(MySQL修改账号密码方法大全小结)
- mysqlinnodb锁使用教程(MySQL Innodb关键特性之插入缓冲insert buffer)
- mysql索引原理及调优(MySQL索引机制程序员必知)
- mysql 高级查询语法(MySQL查询语句进阶知识集锦)
- mysql的连接池名称如何查看(如何使用mysqladmin获取一个mysql实例当前的TPS和QPS)
- mysql操作时间的函数(一篇文章搞定Mysql日期时间函数)
- mysqldump属于哪种备份(MySQLDump的备份小技巧)
- mysql突然报错206无法连接(详解MySQL连接挂死的原因)
- mysql怎么建立主键外键(mysql 实现设置多个主键的操作)
- 三杨 共辅四朝帝王,构建明帝国内阁行政圈(三杨共辅四朝帝王)
- 红色文化进国企(红色文化进国企)
- 车友的选择| 轮毂该如何选(车友的选择轮毂该如何选)
- 秦海璐炫耀和王新军热恋蜜事,不料对方吐槽她吃饱后肚子撅老高(秦海璐炫耀和王新军热恋蜜事)
- 秦海璐一袭旗袍惹人倾心,将高级与淡雅展现的游刃有余(秦海璐一袭旗袍惹人倾心)
- 门外之见 海蛎子味 的表演,能走多远(门外之见海蛎子味)
热门推荐
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9