MySQL: Sortuj wartości GROUP_CONCAT


182

W skrócie: Czy jest jakiś sposób na sortowanie wartości w instrukcji GROUP_CONCAT?

Pytanie:

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

Dostaję ten wiersz:

Rzemiosło »Stolarka

Administracja »Organizacja

Chcę to tak:

Administracja »Organizacja

Rzemiosło »Stolarka


Odpowiedzi:


389

Jasne, patrz 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;

Twój kod jest mocno zależny od twojej konkretnej odpowiedzi i dlatego nie powinien być umieszczany w innym miejscu niż oryginalny post. Jeśli umieścisz go tutaj w tym komentarzu, wielu programistów tutaj go nie zobaczy i nie uzyskasz najlepszej możliwej odpowiedzi :)
Sampson

Smutne ale prawdziwe. :) Czy ten kod wystarczy, czy powinienem napisać całe zapytanie?
Ivar

Czy próbowałeś ASC zamiast DESC?
Sampson,

Nie użyłem żadnego z nich (ASC = domyślnie).
Ivar

10
Nie wiedziałam, że mogłeś order byW ciągu group_concataż taką chwilę. Rozwiązuje problem, który miałem. Dzięki!
DiMono

22

Czy chcesz zamówić?

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;
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.