[英]How to control the JSON_ARRAYAGG elements order in the resulting JSON string
[英]How is it possible to order the array returned by json_arrayagg() in Mysql?
我想订购 json_arrayagg() 返回的数组。 我的查询与此类似:-
select A, json_arrayagg(json_obj('X',value1, 'Y',value2)) AS RESULT
FROM (derived table)
GROUP BY A.
我想要的是我希望返回的数组按 value2 排序。 我尝试在末尾添加 order by 子句(例如 order by value2:它不起作用)
已经尝试在 json_arrayagg() 中添加 order by ..(如:json_arrayagg(json_obj() order by value2)它不起作用。
尝试过使用 group_concat,但它不可靠,不知道为什么它没有返回正确的数据。 已检查限制。
请建议我如何解决这个问题? 谢谢
显然,有一个黑客可能会奏效:
SELECT A, json_arrayagg(json_obj('X',value1, 'Y',value2)) AS RESULT
FROM (SELECT . . .,
ROW_NUMBER() OVER (ORDER BY value2) as seqnum
FROM . . .
. . .
) x
GROUP BY A;
ROW_NUMBER()
- 显然 - 设法对结果集进行排序,即使ORDER BY
不起作用。
我可以确认@Gordon Linoff 的解决方案适用于 MySQL 8.0。 数组按 ORDER BY 参数正确排序。
一旦我获得了足够的声誉,我就会将我的答案变成评论。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.