MySQL: Sắp xếp các giá trị GROUP_CONCAT


182

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?

Truy vấn:

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ệ »

Quản trị »Tổ chức

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

Quản trị »Tổ chức

Thủ công mỹ nghệ »


Câu trả lời:


388

Chắc chắn, hãy xem http://dev.mysql.com/doc/refman/...tions.html#feft_group-concat :

SELECT student_name,
  GROUP_CONCAT(DISTINCT test_score ORDER BY test_score DESC SEPARATOR ' ')
  FROM student
  GROUP BY student_name;

Mã của bạn chủ yếu dựa vào câu trả lời cụ thể của bạn và do đó không nên đặt ở bất cứ đâ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 lập trình viên ở đây sẽ không thấy nó và bạn sẽ không nhận được phản hồi tốt nhất có thể :)
— Sampson

Đáng buồn nhưng là sự thật. :) Mã đó có đủ hay tôi nên viết toàn bộ truy vấn?
— Ivar

Bạn đã thử ASC thay vì DESC chưa?
— Sampson

Tôi đã không sử dụng một trong hai (ASC = mặc định).
— Ivar

10
Tôi không biết bạn có thể order bytrong một group_concatthời điểm chính xác. Giải quyết một vấn đề tôi đang gặp phải. Cảm ơn!
— DiMono

22

Bạn có nghĩa là để đặt hàng bởi?

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;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.