首页  >  文章  >  数据库  >  如何使用 GROUP_CONCAT 在 MySQL 中将多个子行合并为单个父行?

如何使用 GROUP_CONCAT 在 MySQL 中将多个子行合并为单个父行?

DDD
DDD原创
2024-11-27 17:07:11775浏览

How to Combine Multiple Child Rows into a Single Parent Row in MySQL Using GROUP_CONCAT?

在 MySQL 中将子行合并为一个父行

此处提出的挑战涉及组合来自两个表的数据:Ordered_Item 和 Ordered_Options。目标是为 Ordered_Item 中的每个项目输出一行,包括 Ordered_Options 中与该项目关联的所有选项的串联。

数据库结构

**Ordered_Item**
ID | Item_Name
1  | Pizza
2  | Stromboli

**Ordered_Options**
Ordered_Item_ID | Option_Number | Value
1               43         Pepperoni
1               44         Extra Cheese
2               44         Extra Cheese

建议的解决方案

提供的查询尝试,虽然不是语法正确,演示了使用多个连接的可能方法。但是,使用 GROUP_CONCAT 函数可以实现更有效的解决方案。

GROUP_CONCAT 允许将多行中的值连接到单个字符串中。以下查询利用 GROUP_CONCAT 来实现所需的输出:

select
  ordered_item.id as `Id`,
  ordered_item.Item_Name as `ItemName`,
  GROUP_CONCAT(Ordered_Options.Value) as `Options`
from
  ordered_item,
  ordered_options
where
  ordered_item.id=ordered_options.ordered_item_id
group by
  ordered_item.id

输出

Id              ItemName       Options

1               Pizza          Pepperoni,Extra Cheese

2               Stromboli      Extra Cheese

其他注意事项

  • 多个选项: 此解决方案可以处理每个项目任意数量的选项,而不需要对查询进行额外修改。
  • 截断: 如果连接结果超过默认最大长度,请考虑使用 SET会话group_concat_max_len = 8192;增加限制。

以上是如何使用 GROUP_CONCAT 在 MySQL 中将多个子行合并为单个父行?的详细内容。更多信息请关注PHP中文网其他相关文章!

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