MySQL: จัดเรียงค่า GROUP_CONCAT


182

กล่าวโดยย่อ: มีวิธีใดบ้างในการจัดเรียงค่าในคำสั่ง GROUP_CONCAT

ค้นหา:

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

ฉันได้แถวนี้:

หัตถกรรม»ไม้เช่นประตูหน้าต่าง

การบริหาร»องค์กร

ฉันต้องการแบบนี้:

การบริหาร»องค์กร

หัตถกรรม»ไม้เช่นประตูหน้าต่าง


1
นอกจากนี้stackoverflow.com/q/8631210/632951
Pacerier

คำตอบ:


389

โปรดดู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;

รหัสของคุณเป็นที่พึ่งสำหรับคำตอบเฉพาะของคุณอย่างมากดังนั้นจึงไม่ควรวางที่ใดก็ได้ยกเว้นโพสต์ต้นฉบับของคุณ หากคุณใส่มันนี่ในความคิดเห็นนี้โปรแกรมเมอร์มากมายที่นี่จะไม่เห็นมันและคุณจะไม่ได้รับการตอบสนองที่ดีที่สุด :)
จอห์น

เศร้า แต่จริง :) รหัสนั้นเพียงพอหรือควรเขียนแบบสอบถามทั้งหมด?
Ivar

คุณลอง ASC แทน DESC หรือไม่
Sampson

ฉันไม่ได้ใช้อย่างใดอย่างหนึ่ง (ASC = ค่าเริ่มต้น)
Ivar

10
ฉันไม่รู้ว่าคุณทำได้order byภายในgroup_concatสักครู่หนึ่ง แก้ไขปัญหาที่ฉันมี ขอบคุณ!
DiMono

22

คุณหมายถึงการสั่งซื้อโดย?

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;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.