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>
サブクエリは各サイト名を個別の列として返しますが、これは目的のカンマ区切りリストの結果と一致しません。
解決策:
MySQL は、この目標を達成するために 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
指定された列 (この場合、「sites」テーブルの「name」列) の値を連結し、事前定義された区切り文字 (通常はカンマ) で区切ります。次に、結果は「出版物」テーブルの「id」列と「name」列によってグループ化され、各出版物とその関連サイトに一意のレコードが提供され、カンマ区切りのリストとして表示されます。
以上がMySQL クエリ結果をカンマ区切りリストとして取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。