繁体   English   中英

如何对 Mysql 中的 json_arrayagg() 返回的数组进行排序?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM