【MySql项目实战优化】多行数据转化为同一行多列显示

本文分享了一个在MySQL中将多行数据合并为单条记录显示的需求案例。通过介绍业务场景、所需技能和使用SUBSTRING_INDEX函数,详细解释了如何在数据库层面优化查询,避免大量数据处理。最终实现按物料编码分组,提取属性和配置,以更直观的方式展示数据。
摘要由CSDN通过智能技术生成

在我的工作中,接到过这么一个需求,需要合并纵向的数据为 1 条记录显示出来。

业务场景

用业务上的说法,我这里有 1 个物料,其中有 n 个属性,每个属性配置有是否显示的开关,对于这个物料的 n 个属性,就是 n 条记录存储在这个表中;现在就需要对这个表按物料编码分组,分组后的数据,提取出物料的属性和配置,作为单条记录显示,画一个大概的示意图

这需求的理由是大量的数据拉出来后,上方的模式阅读数据会非常的不直观

这种转化的操作,我们可以使用 java 来处理,拉取到全部的数据后,再根据物料编码进行分组后合并数据即可;但,这次我选择在 mysql 中处理好,直接拿到需要的数据

业务中用到的技能

  1. 左连接获取到其余表中的数据
  2. case 将状态数据转化为文本描述,类似于 1 -> 启用, 0 -> 禁用
  3. 表多层嵌套查询
  4. 表数据分组查询 + group_concat 连接目标字段合并到 1 条记录中
  5. substring_index,根据分隔符截取字符串
  6. replace 替换字符串数据

从内往外开始查询处理为临时表

联表查询准备基本数据

在这一步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值