2009-06-15 2 views
139

Вкратце: Есть ли способ отсортировать значения в инструкции GROUP_CONCAT?MySQL: Сортировка значений 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 

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

Crafts » Столярные

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

Я хочу, чтобы это так:

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

Crafts » столярка

+0

Также http://stackoverflow.com/q/8631210/632951 – Pacerier

ответ

300

Конечно, см 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; 
+0

Выполнено. Печально, что вы не можете поместить код в комментарии ... – Ivar

+0

Ваш код сильно зависит от вашего конкретного ответа и поэтому не должен размещаться нигде, кроме вашего исходного сообщения. Если вы поместите его здесь в этот комментарий, многие программисты здесь не увидят его, и вы не получите наилучшего ответа :) – Sampson

+0

Грустный, но факт. :) Является ли этот код достаточным или должен написать весь запрос? – Ivar

16

ли вы имеете в виду по заказу?

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;