我想在MySQL中将结果表转换为JSON数组,最好只使用普通的MySQL命令.例如查询
SELECT name, phone FROM person;
| name | phone |
| Jack | 12345 |
| John | 23455 |
Run Code Online (Sandbox Code Playgroud)
预期的JSON输出将是
[
{
"name": "Jack",
"phone": 12345
},
{
"name": "John",
"phone": 23455
}
]
Run Code Online (Sandbox Code Playgroud)
有没有办法在普通的MySQL中做到这一点?
编辑:
有一些答案如何使用例如MySQL和PHP,但我找不到纯MySQL解决方案.
在MySQL 5.7.12版本(手册中的第13.16节)中仅使用本机JSON功能(无PHP等)我试图编写一个查询,以从包含子对象的关系表生成JSON文档.给出以下示例:
CREATE TABLE `parent_table` (
`id` int(11) NOT NULL,
`desc` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `child_table` (
`id` int(11) NOT NULL,
`parent_id` int(11) NOT NULL,
`desc` varchar(20) NOT NULL,
PRIMARY KEY (`id`,`parent_id`)
);
insert `parent_table` values (1,'parent row 1');
insert `child_table` values (1,1,'child row 1');
insert `child_table` values (2,1,'child row 2');
Run Code Online (Sandbox Code Playgroud)
我正在尝试生成一个如下所示的JSON文档:
[{
"id" : 1,
"desc" : "parent row 1",
"child_objects" : [{
"id" : 1,
"parent_id" : 1,
"desc" : "child row 1" …Run Code Online (Sandbox Code Playgroud) 我有共同的情况,但我找不到共同的解决方案......
想象一下我有两个表,如作者和相应的书籍:
作者
+----+-----------+
| id | name |
+----+-----------+
| 1 | O.Connor |
| 2 | F.Myler |
+----+-----------+
Run Code Online (Sandbox Code Playgroud)
图书
+----+-----------+-----------+----------------+
| id | author_id | title | number_of_pages|
+----+-----------+-----------+----------------+
| 1 | 1 |Book 1 |315 |
| 2 | 1 |Book 2 |265 |
+----+-----------+-----------+----------------+
Run Code Online (Sandbox Code Playgroud)
我想在一个sql查询中从数据库获取数据(我使用mySQL,但这并不重要,我想要一个独立于数据库的解决方案),使用JOIN,例如:
SELECT A.*, B.title as book_title, B.number_of_pages as book_pages FROM authors A LEFT JOIN books B ON B.author_id=A.id
Run Code Online (Sandbox Code Playgroud)
由于大型数据库的生产力问题,我想避免循环中的多个查询。然后我需要将第二个表中的数据嵌套为子数组,以避免拥有相同数据的多个副本。换句话说,我需要将数据库的平面结果转换为嵌套的多维数组。它应该给出类似的内容:
[
{
"id": 3,
"name": "O.Connor",
"birth_date": "05.06.1985",
"from": "England",
"mother": "", …Run Code Online (Sandbox Code Playgroud)