ホームページ >データベース >mysql チュートリアル >SQL テーブルで各映画の俳優を連結するにはどうすればよいですか?

SQL テーブルで各映画の俳優を連結するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-15 06:27:43349ブラウズ

How to Concatenate Actors for Each Movie in a SQL Table?

SQL テーブル内の各映画の俳優名を結合する

「映画」列と「俳優」列があるテーブルを想像してください。 このタスクは、映画とそれに対応する俳優のリストを取得し、各映画のすべての俳優を 1 つの文字列に結合することです。

string_agg()を使用した解決策:

最も効率的な方法は、string_agg() 関数 (PostgreSQL 9.0 以降で利用可能) を使用する方法です。

<code class="language-sql">SELECT movie, string_agg(actor, ', ') AS actor_list
FROM table_name
GROUP BY movie;</code>

string_agg() は、映画ごとに俳優名をカンマで区切って連結します。 GROUP BY movie は、フィルムごとに 1 行を確保します。

古い PostgreSQL バージョン (9.0 より前) の代替:

古い PostgreSQL バージョンの場合は、array_agg()array_to_string() を使用します:

<code class="language-sql">SELECT movie, array_to_string(array_agg(actor ORDER BY actor), ', ') AS actor_list
FROM table_name
GROUP BY movie;</code>

これはアクターを配列に集約し、それをカンマ区切りの文字列に変換します。 ORDER BY actor 句は、各映画のリスト内で俳優をアルファベット順に並べ替えます。

アクター リストの順序のカスタマイズ:

各リスト内のアクターの順序を制御するには (請求順など)、ORDER BY または string_agg() 内に array_agg() を追加します。

<code class="language-sql">SELECT movie, string_agg(actor, ', ' ORDER BY actor) AS actor_list  --Alphabetical order
FROM table_name
GROUP BY movie;</code>

このアプローチは、映画と俳優の関係のプレゼンテーションを合理化し、データ分析と表示を容易にします。

以上がSQL テーブルで各映画の俳優を連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。