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

データベース内の各映画の俳優名を連結するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-15 08:32:44623ブラウズ

How to Concatenate Actor Names for Each Movie in a Database?

単一列の複数の結果行を別の列でグループ化して連結します

「映画」や「俳優」などの列名を持つデータベース テーブルでは、同じ映画に属する複数の俳優行を単一のカンマ区切り文字列に結合する必要がある場合があります。

<code>表:

| 电影 | 演员 |
|---|---|
| A | 1 |
| A | 2 |
| A | 3 |
| B | 4 |</code>

期待される結果:

<code>| 电影 | 演员列表 |
|---|---|
| A | 1, 2, 3 |
| B | 4 |</code>

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

これを行うには、string_agg() 集計関数を利用できます。クエリは次のとおりです:

<code>SELECT 电影, string_agg(演员, ', ') AS 演员列表
FROM 表
GROUP BY 电影;</code>

string_agg() 関数は、「Actor」列の値をカンマとスペースで区切って連結します。 GROUP BY MOVIE 句を使用すると、結果が映画名ごとにグループ化されます。

その他の注意事項:

  1. GROUP BY 1 の 1 は、最初の列 (この場合は「映画」) へのインデックス参照です。
  2. string_agg() は入力としてテキスト データ型を想定します。 「actor」列に別の型 (整数など) がある場合は、string_agg(actor::text, ', ') など、明示的にテキストに変換する必要がある場合があります。
  3. string_agg() 関数で ORDER BY 句を使用すると、連結された値 (ORDER BY アクターなど) を並べ替えることができます。

このメソッドは、特定の列の複数の行を連結し、別の列ごとにグループ化する簡単かつ効率的な方法を提供します。

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

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