首页 > 数据库 > mysql教程 > 如何使用 SQL 将多行连接成一行?

如何使用 SQL 将多行连接成一行?

DDD
发布: 2025-01-15 08:48:43
原创
175 人浏览过

How Can I Concatenate Multiple Rows into a Single Row Using SQL?

使用 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>
登录后复制

详细内容如下:

  1. string_agg(actor::text, ', '):此部分使用逗号和空格作为分隔符连接 actor 列值。 ::text 显式地将 actor 列转换为文本,如果它还不是文本数据类型,则这是必需的。
  2. GROUP BY movie:这按 movie 列对行进行分组,确保同一部电影的演员聚合在一起。
  3. 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板