Как можно упорядочить массив, возвращаемый json_arrayagg (), в Mysql? - PullRequest
0 голосов
/ 04 августа 2020

Я хочу заказать массив, возвращаемый json_arrayagg (). Мой запрос похож на этот: -

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

Я хочу, чтобы возвращаемый массив упорядочивался по значению 2. Я пробовал добавить предложение order by в конце (например, order by value2: он не работает)

пробовал добавить заказ внутри json_arrayagg () .. (например: json_arrayagg (json_obj () order by value2 ) Это не работает.

Пробовали использовать group_concat, но это ненадежно и не знаю, почему он не возвращает правильные данные. Проверяли пределы.

Пожалуйста, подскажите, как решить это? Спасибо

1 Ответ

0 голосов
/ 06 августа 2020

По-видимому, есть хак, который может сработать:

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 не работает.

...