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
您可能感兴趣
- python 数据库实现学生管理系统(python+mysql实现教务管理系统)
- mysql查询逗号分割字符串(MySQL 字符串拆分实例无分隔符的字符串截取)
- python下的sql处理(python中aioysql异步操作MySQL的方法)
- mysql创建存储过程的代码(MySQL修改存储过程的详细步骤)
- mysql的存储方法(MySQL中的binary类型使用操作)
- mysql读写分离同步策略(Mysql主从复制与读写分离图文详解)
- mysql锁类型大全(简单了解 MySQL 中相关的锁)
- mysqljoin语句用法(MySQL的join buffer原理)
- 深入理解mysql索引(MySQL中冗余和重复索引的区别说明)
- zabbix监控sql server集群(zabbix 监控mysql的方法)
- mysql判断表中字段是否存在(mysql插入前判断数据是否存在的操作)
- mysql 查询语法常见问题(MySQL 异常有这一篇就够了!)
- mysql8.0.12安装教程图解(MySql8.023安装过程图文详解首次安装)
- mysql8.0.25安装及配置超详细教程(MySQL8.0.21安装步骤及出现问题解决方案)
- mysql默认的事务隔离级别是哪一种(MySql学习笔记之事务隔离级别详解)
- mysql存储引擎的创建与修改(关于MySQL Memory存储引擎的相关知识)
- TVB新剧《黯夜守护者》将播,陈展鹏陈炜首次合作探讨人性(TVB新剧黯夜守护者将播)
- 新晋小花被称女版吴卓羲 将取代滕丽名成为TVB新一代御用女警(新晋小花被称女版吴卓羲)
- 艺人吴卓羲10年警察生涯,演足10年阿Sir,系咩玩法(艺人吴卓羲10年警察生涯)
- 菲律宾潜水(菲律宾潜水价格)
- 泰国人妖(变性手术生殖器要割掉吗)
- 泰国美女(泰国人妖和女性如何区分)
热门推荐
- vue慢动作怎么操作(vue开发之moment的介绍与使用)
- 云主机的作用和功能(云主机具备的特性有哪些?)
- 手机网站设计的几个建议
- axios并发请求数据(项目中如何使用axios过滤多次重复请求详解)
- docker compose使用方法(docker和docker-compose一键安装教程支持在线和离线)
- react性能优化是哪个周期(React 并发功能体验前端的并发模式)
- web服务器搭建自己的网站(单台web服务器如何尽可能的提高网站性能)
- divcss制作教程(CSS中Single Div 绘图技巧的实现)
- python爬虫怎么爬取vip资源(Python网络爬虫之爬取微博热搜)
- yii2 在控制器中验证请求参数的使用方法(yii2 在控制器中验证请求参数的使用方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9