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

私はこの行を取得します:

工芸品»建具

管理»組織

私はそれをこのようにしたいです:

管理»組織

工芸品»建具


回答:


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;

あなたのコードはあなたの具体的な答えに大きく依存しているので、元の投稿以外のどこにも配置すべきではありません。このコメントにここに入れると、多くのプログラマーには表示されず、可能な限り最高の応答が得られません:)
Sampson

悲しいですが本当。:)そのコードで十分ですか、それともクエリ全体を記述すべきですか?
Ivar

DESCの代わりにASCを試しましたか?
サンプソン

どちらも使用しませんでした(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.