mysql 生成json_如何使用mysql本机json函数生成嵌套的json对...

在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');

我正在尝试生成一个如下所示的JSON文档:

[{

"id" : 1,

"desc" : "parent row 1",

"child_objects" : [{

"id" : 1,

"parent_id" : 1,

"desc" : "child row 1"

}, {

"id" : 2,

"parent_id" : 1,

"desc" : "child row 2"

}

]

}]

我是MySQL的新手,并怀疑有一种SQL模式可以从一对多关系生成嵌套的JSON对象,但我找不到它.

在Microsoft SQL(我更熟悉)中,以下工作:

select

[p].[id]

,[p].[desc]

,(select * from [dbo].[child_table] where [parent_id] = [p].[id] for json auto) AS [child_objects]

from [dbo].[parent_table] [p]

for json path

我试图在MySQL中编写等价如下:

select json_object(

'id',p.id

,'desc',p.`desc`

,'child_objects',(select json_object('id',id,'parent_id',parent_id,'desc',`desc`)

from child_table where parent_id = p.id)

)

from parent_table p;

select json_object(

'id',p.id

,'desc',p.`desc`

,'child_objects',json_array((select json_object('id',id,'parent_id',parent_id,'desc',`desc`)

from child_table where parent_id = p.id))

)

from parent_table p

两次尝试都失败并出现以下错误:

Error Code: 1242. Subquery returns more than 1 row

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值