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

ocebsuys  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(962)

我想对json_arrayagg()返回的数组进行排序。我的查询类似于this:-

select A, json_arrayagg(json_obj('X',value1, 'Y',value2)) AS RESULT
FROM (derived table)
GROUP BY A.

我希望返回的数组按value2排序。我尝试在末尾添加orderby子句(例如,orderbyvalue2:它不起作用)
尝试在json_arrayagg()中添加order by…(例如:json_arrayagg(json_obj()order by value2)它不起作用。
我试过使用组concat,但它不可靠,也不知道为什么它不能返回正确的数据。我已经检查了极限。
请告诉我怎么解决这个问题?谢谢

mcvgt66p

mcvgt66p1#

显然,有一种黑客可能会奏效:

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 不起作用。

相关问题