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


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;

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;
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.