[英]Invalid group of use function using nested JSON_ARRAYAGG()
我有以下简单的查询
select
jrt.threadId,
JSON_ARRAYAGG(
JSON_OBJECT(
'roundId',jrr.roundId,
'bets', JSON_ARRAYAGG(
JSON_OBJECT(
'betId', bets.betId,
'amount', bets.amount
)
)
)
) as rounds
from threads jrt
left join rounds jrr on jrt.threadId = jrr.threadId
left join bets on jrr.roundId= bets.roundId
group by jrt.threadId
如果我从第一个JSON_OBJECT
键值中删除bets
,这将非常有效。
我很难理解错误的确切原因,因为它没有什么启发性。
{"code":"ER_INVALID_GROUP_FUNC_USE","errno":1111}
如果我在bets
上使用JSON_ARRAY
聚合函数而不是JSON_ARRAYAGG
,则该查询也有效。
如果Bets
是一个聚合,为什么JSON_ARRAYAGG
抛出错误?
不允许使用嵌套的 JSON_ARRAYAGG,而必须使用嵌套查询。 我已经修改了您的查询以下应该工作
select
jrt.threadId,
JSON_ARRAYAGG(
JSON_OBJECT(
'roundId',jrr.roundId,
'bets',( select JSON_ARRAYAGG(
JSON_OBJECT(
'betId', bets.betId,
'amount', bets.amount
) from threads jrt
left join rounds jrr on jrt.threadId = jrr.threadId
left join bets on jrr.roundId= bets.roundId
))
)
) as rounds
from threads jrt
left join rounds jrr on jrt.threadId = jrr.threadId
left join bets on jrr.roundId= bets.roundId
group by jrt.threadId
如果有人可以进一步优化它,请告诉我
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.