MySQL: GROUP_CONCAT değerlerini sırala


182

Kısaca: Bir GROUP_CONCAT deyimindeki değerleri sıralamanın bir yolu var mı?

Sorgu:

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

Bu satırı alıyorum:

El Sanatları »Doğrama

Yönetim »Organizasyon

Ben böyle istiyorum:

Yönetim »Organizasyon

El Sanatları »Doğrama


Yanıtlar:


389

Elbette, bkz. 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;

Kodunuz özel cevabınız için büyük ölçüde kullanılmaktadır ve bu nedenle orijinal postanız dışında hiçbir yere yerleştirilmemelidir. Bu yorumda buraya koyarsanız, burada birçok programcı görmez ve mümkün olan en iyi yanıtı alamazsınız :)
Sampson

Acı ama gerçek. :) Bu kod yeterli mi yoksa tüm sorguyu yazmalıyım?
Ivar

DESC yerine ASC'yi denediniz mi?
Sampson

İkisini de kullanmadım (ASC = varsayılan).
Ivar

10
Bu tam ana kadar order bybir group_concatsüre içinde yapabileceğinizi bilmiyordum . Yaşadığım bir sorunu çözer. Teşekkürler!
DiMono

22

Tarafından sipariş vermek istiyor musunuz?

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;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.