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

标签 mysql sql json sql-order-by aggregate

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

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

我想要的是我希望返回的数组按 value2 排序。 我尝试在末尾添加 order by 子句(例如,按 value2 排序:它不起作用)

已尝试在 json_arrayagg() 内部添加顺序..(例如:json_arrayagg(json_obj() order by value2) 它不起作用。

已尝试使用 group_concat ,但它不可靠并且不知道为什么它没有返回正确的数据。已检查限制。

请建议我如何解决这个问题? 谢谢

最佳答案

显然,有一个 hack 可能会起作用:

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

关于mysql - 如何在 Mysql 中对 json_arrayagg() 返回的数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63252941/

相关文章:

SQL SELECT 语句 - 根据第二个表中的匹配数选择记录

c# - JSON 结构化列分成多列

mysql - 更新同一表中的唯一匹配记录

mysql - 对 200 万个条目表的缓慢 MySQL 查询

mysql - 当前时间,但昨天

ruby-on-rails - 如何在调用 to_json 保留 :includes 时应用 WHERE 过滤器

javascript - 从 FETCH API JSON 响应中删除字段和键

php - 带有子查询的 Doctrine Update 查询

php - 要在 latin1_swedish_ci 表 MYSQl 上插入的数据 UTF-8

sql - 选择每个人的最新记录