MySQL: GROUP_CONCAT-Werte sortieren


182

Kurz gesagt: Gibt es eine Möglichkeit, die Werte in einer GROUP_CONCAT-Anweisung zu sortieren?

Abfrage:

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

Ich bekomme diese Zeile:

Handwerk »Tischlerei

Verwaltung »Organisation

Ich will es so:

Verwaltung »Organisation

Handwerk »Tischlerei


Antworten:


388

Sicher, siehe 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;

Ihr Code ist für Ihre spezifische Antwort stark abhängig und sollte daher nur in Ihrem ursprünglichen Beitrag platziert werden. Wenn Sie es hier in diesen Kommentar setzen, werden es viele Programmierer hier nicht sehen und Sie werden nicht die bestmögliche Antwort erhalten :)
Sampson

Traurig aber wahr. :) Reicht dieser Code aus oder soll ich die gesamte Abfrage schreiben?
Ivar

Haben Sie ASC anstelle von DESC ausprobiert?
Sampson

Ich habe keines von beiden verwendet (ASC = Standard).
Ivar

10
Ich wusste nicht, dass Sie order byinnerhalb eines group_concatgenau diesem Moment könnten . Löst ein Problem, das ich hatte. Vielen Dank!
DiMono

22

Wollen Sie bis bestellen?

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;
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.