2009-06-15 15 views
139

Tóm lại: Có cách nào để sắp xếp các giá trị trong câu lệnh GROUP_CONCAT không?MySQL: Sắp xếp các giá trị GROUP_CONCAT

Query:

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 

tôi nhận được hàng này:

Thủ công mỹ nghệ » Mộng

Administration » Tổ chức

Tôi muốn nó như thế này:

Administration » Tổ chức

Thủ công mỹ nghệ » Mộng

+0

Cũng http://stackoverflow.com/q/8631210/632951 – Pacerier

Trả lời

300

Chắc chắn, xem 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; 
+0

Xong. Buồn rằng bạn không thể đặt mã trong các bình luận ... – Ivar

+0

Mã của bạn được dựa nhiều vào câu trả lời cụ thể của bạn, và do đó không nên đặt ở bất kỳ đâu ngoài bài đăng gốc của bạn. Nếu bạn đặt nó ở đây trong bình luận này, nhiều người lập trình ở đây sẽ không nhìn thấy nó, và bạn sẽ không nhận được phản ứng tốt nhất có thể :) – Sampson

+0

Buồn nhưng đúng. :) Đó là mã đủ hay tôi nên viết toàn bộ truy vấn? – Ivar

16

Bạn có nghĩa là để tự do?

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;