「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > MySQL GROUP_CONCAT ステートメントの値の順序を制御するにはどうすればよいですか?

MySQL GROUP_CONCAT ステートメントの値の順序を制御するにはどうすればよいですか?

2024 年 11 月 15 日に公開
ブラウズ:264

How Can I Control the Order of Values in a MySQL GROUP_CONCAT Statement?

GROUP_CONCAT ステートメントでの値の順序付け

MySQL では、GROUP_CONCAT は特定のグループに基づいて 1 つのカラムの値を結合します。ただし、連結された値の順序は、通常、グループ化が行われる順序によって決まります。これらの値の並べ替えを制御するには、特定の構文が必要です。

GROUP_CONCAT ステートメントで連結された値を並べ替えるには、ネストされたクエリ内で ORDER BY 句を使用します。たとえば、次のクエリを考えてみます。

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

連結されたコンピテンス値を昇順で並べ替えるには、クエリを次のように変更します。

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 ASC) SEPARATOR "<br />\n") AS competences

同様に、値を降順に並べ替えるには、ASC:

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 DESC) SEPARATOR "<br />\n") AS competences
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3