如何在 MySQL 中将结果表转换为 JSON 数组

How to convert result table to JSON array in MySQL(如何在 MySQL 中将结果表转换为 JSON 数组)
本文介绍了如何在 MySQL 中将结果表转换为 JSON 数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想最好只使用简单的 MySQL 命令将结果表转换为 MySQL 中的 JSON 数组.例如查询

SELECT name, phone FROM person;|姓名 |电话 ||杰克 |12345 ||约翰 |23455 |

预期的 JSON 输出是

<预><代码>[{"name": "杰克",电话":12345},{"name": "约翰",电话":23455}]

有没有办法在普通的 MySQL 中做到这一点?

有一些答案是如何做到这一点的,例如MySQL 和 PHP,但我找不到纯 MySQL 解决方案.

解决方案

新解决方案:

使用您的精彩评论构建,谢谢!

SELECT JSON_ARRAYAGG(JSON_OBJECT('name', name, 'phone', phone)) from Person;

<小时>

旧解决方案:

在@Schwern 的帮助下,我设法提出了这个查询,这似乎有效!

SELECT CONCAT('[',GROUP_CONCAT(JSON_OBJECT('name', name, 'phone', phone)),']')从人;

I'd like to convert result table to JSON array in MySQL using preferably only plain MySQL commands. For example with query

SELECT name, phone FROM person;

| name | phone |
| Jack | 12345 |
| John | 23455 |

the expected JSON output would be

[
  {
    "name": "Jack",
    "phone": 12345
  },
  {
    "name": "John",
    "phone": 23455
  }
]

Is there way to do that in plain MySQL?

EDIT:

There are some answers how to do this with e.g. MySQL and PHP, but I couldn't find pure MySQL solution.

解决方案

New solution:

Built using Your great comments, thanks!

SELECT JSON_ARRAYAGG(JSON_OBJECT('name', name, 'phone', phone)) from Person;


Old solution:

With help from @Schwern I managed to put up this query, which seems to work!

SELECT CONCAT(
    '[', 
    GROUP_CONCAT(JSON_OBJECT('name', name, 'phone', phone)),
    ']'
) 
FROM person;

这篇关于如何在 MySQL 中将结果表转换为 JSON 数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)
SQL/MySQL: split a quantity value into multiple rows by date(SQL/MySQL:按日期将数量值拆分为多行)