MySQL: сортировка значений GROUP_CONCAT - PullRequest
168 голосов
/ 15 июня 2009

Вкратце: есть ли способ сортировки значений в операторе GROUP_CONCAT?

Запрос:

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

Я получаю эту строку:

Рукоделие "Столярные изделия

Администрация "Организация

Я хочу это так:

Администрация "Организация

Поделки "Столярные изделия" 1019 *

Ответы [ 2 ]

363 голосов
/ 15 июня 2009

Конечно, см. 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;
20 голосов
/ 15 июня 2009

Вы хотите заказать?

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;
...