ホームページ >データベース >mysql チュートリアル >SQL テーブルで各映画の俳優を連結するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。