首页 >数据库 >mysql教程 >如何在 MySQL 中使用 GROUP_CONCAT 和 CONCAT 将多行连接成单个字符串?

如何在 MySQL 中使用 GROUP_CONCAT 和 CONCAT 将多行连接成单个字符串?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-13 01:00:10464浏览

How to Concatenate Multiple Rows into a Single String Using GROUP_CONCAT and CONCAT in MySQL?

在 MySQL 中的 CONCAT 中使用 GROUP_CONCAT

要将多行连接成一个字符串,同时按公共值对它们进行分组,您可以使用GROUP_CONCAT 函数。让我们通过一个实际的例子来探索它的应用。

问题:

给定一个名为 mytbl 的表,其数据如下:

id Name Value
1 A 4
1 A 5
1 B 8
2 C 9

如何我们将这些数据转换为以下内容格式:

id Column
1 A:4,5,B:8
2 C:9

答案:

要实现此目的,您可以使用嵌套的 GROUP_CONCAT 和 CONCAT 的组合函数:

select id, group_concat(`Name` separator ',') as `ColumnName`
from
(
  select id, 
  concat(`Name`, ':', group_concat(`Value` separator ',')) as Name
   from mytbl group by id, Name
) tbl
group by id;

解释:

  • 最里面的查询按 id 和 Name 对数据进行分组,然后将 Value 列与逗号连接起来作为每个组的分隔符。
  • 外部查询按 id 对结果进行分组并连接之前的结果连接的名称字符串,现在包含每个 id 中每个名称的值。

这种嵌套的 GROUP_CONCAT 和 CONCAT 组合使您能够生成所需的输出,其中每个 id 与逗号分隔的字符串关联名称及其对应的值。

以上是如何在 MySQL 中使用 GROUP_CONCAT 和 CONCAT 将多行连接成单个字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

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