MySQL: Urutkan nilai GROUP_CONCAT

182

Singkatnya: Apakah ada cara untuk mengurutkan nilai dalam pernyataan GROUP_CONCAT?

Pertanyaan:

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

Saya mendapatkan baris ini:

Kerajinan »Bengkel tukang kayu

Administrasi »Organisasi

Saya menginginkannya seperti ini:

Administrasi »Organisasi

Kerajinan »Bengkel tukang kayu

Ivar
sumber

Jawaban:

389

Tentu, lihat 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;
Sampson
sumber
Kode Anda sangat diandalkan untuk jawaban spesifik Anda, dan oleh karena itu tidak boleh ditempatkan di mana pun kecuali pos asli Anda. Jika Anda taruh di sini di komentar ini, banyak programmer di sini tidak akan melihatnya, dan Anda tidak akan mendapatkan respon terbaik :)
Sampson
Sedih tapi benar. :) Apakah kode itu cukup atau haruskah saya menulis seluruh permintaan?
Ivar
Apakah Anda mencoba ASC, bukan DESC?
Sampson
Saya tidak menggunakan keduanya (ASC = default).
Ivar
10
Aku tidak tahu Anda bisa order bydalam group_concatsampai saat yang tepat ini. Memecahkan masalah yang saya alami. Terima kasih!
DiMono
22

Apakah Anda bermaksud memesan?

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;
Haim Evgi
sumber