Search code examples
mysqlsortingsql-order-bygroup-concat

MySQL: Sort GROUP_CONCAT values


In short: Is there any way to sort the values in a GROUP_CONCAT statement?

Query:

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

I get this row:

Crafts » Joinery

Administration » Organization

I want it like this:

Administration » Organization

Crafts » Joinery


Solution

  • Sure, see 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;