在 SQL 表中组合每部电影的演员名称
想象一个包含“电影”和“演员”列的表格。 任务是检索电影及其相应演员的列表,并将每部电影的所有演员组合成一个字符串。
使用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
确保每部电影一行。
旧版 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>
这会将 actor 聚合到一个数组中,然后将其转换为逗号分隔的字符串。 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中文网其他相关文章!