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

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

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

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

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

mcvgt66p

mcvgt66p1#

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

  1. SELECT A, json_arrayagg(json_obj('X',value1, 'Y',value2)) AS RESULT
  2. FROM (SELECT . . .,
  3. ROW_NUMBER() OVER (ORDER BY value2) as seqnum
  4. FROM . . .
  5. . . .
  6. ) x
  7. GROUP BY A;

这个 ROW_NUMBER() --很显然--成功地排序了结果集,即使 ORDER BY 不起作用。

相关问题