首页 >数据库 >mysql教程 >如何在 SQL 中将每个电影的多个演员姓名合并到一个列中?

如何在 SQL 中将每个电影的多个演员姓名合并到一个列中?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-15 08:40:47275浏览

How Can I Combine Multiple Actor Names into a Single Column per Movie in SQL?

在 SQL 中将每部电影的多个演员姓名合并到一个列中

使用电影数据库通常需要汇总每部电影的演员信息。 这涉及将与单个电影关联的多个演员姓名合并到单个列条目中。

SQL 解决方案

PostgreSQL 提供了 string_agg() 函数,非常适合此任务。 这是演示其用法的查询:

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

此查询:

  • movie:指定保存电影标题的列。
  • actor:指定列出演员姓名的列。
  • string_agg(actor, ', '):此函数连接每部电影的演员姓名,并用逗号和空格分隔。
  • GROUP BY movie:对结果进行分组,确保每部电影一行。

详细说明

string_agg() 函数擅长将多行组合成单个字符串值。 在这里,它为每部电影创建一个以逗号分隔的演员列表。

对于排序的演员列表,请在 ORDER BY 中包含 string_agg() 子句:

<code class="language-sql">string_agg(actor, ', ' ORDER BY actor) AS actors</code>

但是,子查询通常可以提供更好的排序性能。

string_agg()的优点

  • 通过将多行聚合为单个值来简化数据处理。
  • 通过对每部电影的相关演员数据进行分组来改进数据呈现。

以上是如何在 SQL 中将每个电影的多个演员姓名合并到一个列中?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn