MySQL: ordenar valores GROUP_CONCAT


182

En resumen: ¿hay alguna forma de ordenar los valores en una instrucción GROUP_CONCAT?

Consulta:

GROUP_CONCAT((SELECT GROUP_CONCAT(parent.name SEPARATOR " » ") 
FROM test_competence AS node, test_competence AS parent 
WHERE node.lft BETWEEN parent.lft AND parent.rgt 
  AND node.id = l.competence 
  AND parent.id != 1 
ORDER BY parent.lft) SEPARATOR "<br />\n") AS competences

Me sale esta fila:

Artesanía »Carpintería

Administración »Organización

Lo quiero así:

Administración »Organización

Artesanía »Carpintería


Respuestas:


389

Claro, consulte http://dev.mysql.com/doc/refman/...tions.html#function_group-concat :

SELECT student_name,
  GROUP_CONCAT(DISTINCT test_score ORDER BY test_score DESC SEPARATOR ' ')
  FROM student
  GROUP BY student_name;

Su código depende en gran medida de su respuesta específica y, por lo tanto, no debe colocarse en ningún lugar que no sea su publicación original. Si lo pones aquí en este comentario, muchos programadores aquí no lo verán, y no obtendrás la mejor respuesta posible :)
Sampson

Triste pero cierto. :) ¿Es suficiente ese código o debería escribir toda la consulta?
Ivar

¿Intentaste ASC en lugar de DESC?
Sampson

No utilicé ninguno de ellos (ASC = predeterminado).
Ivar

10
No sabía que podías order byen un momento group_concathasta este momento exacto. Resuelve un problema que estaba teniendo. ¡Gracias!
DiMono

22

¿Te refieres a ordenar por?

SELECT _key,            
COUNT(*) as cnt,            
GROUP_CONCAT(_value ORDER BY _value SEPARATOR ', ') as value_list      
FROM group_concat_test      
GROUP BY _key      
ORDER BY _key;
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.