En en artículo anterior, te mostré como crear un json en MySQL. Ahora te muestro como puedes ordenar la información de un arreglo json.
Requerimientos
- MySQL 8.0.2
- Workbench
Problema: ¿Cómo ordenar los elementos de un arreglo json (json rray)?
Cuando usamos la función JSON_ARRAYAGG, Mysql 8.0.2 no puede ordenar los elementos de dicho arreglo.
-- ESTO NO FUNCIONA =(
SELECT
JSON_ARRAYAGG(JSON_OBJECT('id', r.id,'nombre', r.nombre))
FROM
tutoriales.referencias r
WHERE r.idUsuario = 1
ORDER BY r.nombre asc -- Nomas no jala =/
;
Solución
Para ordenar un arreglo json en MySQL usaremos la función ROW_NUMBER, como lo explico en el siguiente vídeo:
Query
Usaremos las funciones JSON_OBJECT Y JSON_ARRAYAGG.
-- Resultado final =)
SELECT
JSON_ARRAYAGG(jarray.dato)
FROM (
-- Consulta del paso 2
select JSON_OBJECT('id', r.id,'nombre', r.nombre) AS dato,
ROW_NUMBER() OVER ( order by r.nombre asc)
from tutoriales.referencias r
) jarray
WHERE 1=1;