MySQL の領域では、GROUP_CONCAT ステートメントから返されたデータを操作する必要が生じる場合があります。一般的な要件の 1 つは、連結された文字列内の値を並べ替えることです。
これを実現するには、GROUP_CONCAT 関数の隠れた宝石である ORDER BY 句を活用できます。 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
このクエリは行を返します。 parent.name 列の値を連結し、parent.lft に基づいて昇順で並べ替えます。
ただし、降順などの特定の順序が必要な場合は、単に ORDER BY 句を調整します。
... ORDER BY parent.lft DESC
GROUP_CONCAT の ORDER BY 句は、最も内側のサブクエリに適用されます。複数層のサブクエリがある場合、外側のクエリは ORDER BY 句の影響を受けません。
以上がMySQL で GROUP_CONCAT 文字列内の値を並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。