使用 SQL 将多行合并为一行
许多数据库任务需要将一列中具有相同值的多行合并为一行,并连接另一列中的值。 想象一个电影数据库,其中每部电影的演员在单独的行中列出:
<code>Movie | Actor ---------------- A 1 A 2 A 3 B 4</code>
目标是创建如下结果集:
<code>Movie | ActorList ---------------- A 1, 2, 3 B 4</code>
使用字符串聚合进行合并
SQL 的 string_agg
函数提供了一个高效的解决方案。此聚合函数连接指定列中的值。这是查询:
<code class="language-sql">SELECT movie, string_agg(actor::text, ', ') AS actor_list FROM tbl GROUP BY movie;</code>
详细内容如下:
string_agg(actor::text, ', ')
:此部分使用逗号和空格作为分隔符连接 actor
列值。 ::text
显式地将 actor
列转换为文本,如果它还不是文本数据类型,则这是必需的。GROUP BY movie
:这按 movie
列对行进行分组,确保同一部电影的演员聚合在一起。actor_list
:这是生成的连接字符串的别名。增强功能和注意事项:
::text
)。ORDER BY
内添加 string_agg
:<code class="language-sql">SELECT movie, string_agg(actor::text, ', ' ORDER BY actor) AS actor_list FROM tbl GROUP BY movie;</code>
这种查询内排序通常比对最终结果集进行排序更有效。
这种方法有效地将多行合并为一个更易于管理的行,使数据分析和报告更加简单。
以上是如何使用 SQL 将多行连接成一行?的详细内容。更多信息请关注PHP中文网其他相关文章!