ホームページ >データベース >mysql チュートリアル >MySQL クエリ結果からカンマ区切りのリストを生成するにはどうすればよいですか?
カンマ区切りリストなどの特定の形式でデータを抽出するのは一般的なタスクです。 パブリケーションの詳細と、関連するサイト名のカンマ区切りリストが必要だとします。サブクエリを使用した単純なアプローチは次のようになります:
<code class="language-sql">SELECT p.id, p.name, (SELECT name FROM sites s WHERE s.id = p.site_id) AS site_list FROM publications p</code>
ただし、これではカンマ区切りのリストではなく、行ごとに 1 つのサイト名が生成されます。
目的のカンマ区切りリストを作成する鍵となるのは、GROUP_CONCAT
関数です。この関数は、複数の値をカンマ (またはカスタム区切り文字) で区切って単一の文字列に連結します。 改良されたクエリは次のとおりです:
<code class="language-sql">SELECT p.id, p.name, GROUP_CONCAT(s.name) AS site_list FROM sites s INNER JOIN publications p ON (s.id = p.site_id) GROUP BY p.id, p.name;</code>
この改訂されたクエリでは、GROUP_CONCAT(s.name)
を使用してサイト名を結合します。 INNER JOIN
は publications
テーブルと sites
テーブルを効率的にリンクし、GROUP BY p.id, p.name
関数が各パブリケーションのサイト名を正しく集計することを保証します。GROUP_CONCAT
以上がMySQL クエリ結果からカンマ区切りのリストを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。