MySQL行转列

  • A+
所属分类:MySQL python

1.1. 前言

公司的多个系统间的通信是通过接口来实践的。由于历史的遗留的原因,从其他系统传来的订单和商品的信息是一个字符串,在我们这边 "商品ID" 存储的方式是使用 逗号(',')隔开的。最近要在之前保存的业务上增加需求。但是不好对该记录的商品进行关联。因此,为了让改动降到最低,我们有规划了另外一个表用来来存放商品信息,只存放 "商品ID" 和 主表的ID。

1.2. 表的基本结构

改造前表结构:

改造后表结构:

1.3. 实现行转列

这边我们需要借助一个有着ID连续的表(mysql.help_topic)来做关联,以至于能够划分出商品ID。

1.4. 分解SQL进行解释

这边我们的目的是获得商品ID字符串中第二个商品ID。

使用 逗号(',') 分割 good_ids 查看前两个元素(good_id):

通过上面获得的前两个元素的字符串,再次进行 逗号(',') 分割,并获得最后一个元素。

最终的SQL只是将指定的第二个元素,变成动态改变的。而动态的改变的数字就是通过关联mysql.help_topic来实现的

小提示:这里使用mysql.help_topic的原因是它有从0到629连续不断的help_topic_id。当然你也可以自己创建一个表并且插入连续不断的数据来作为关联表。

提示:如果你对编程语言熟悉,也可以使用编写程序解析good_ids保存的方式来做。

 

昵称:HH
QQ:275258836
ttlsa群交流沟通(QQ群②:6690706 QQ群③:168085569 QQ群④:415230207(新) 微信公众号:ttlsacom)

感觉本文内容不错,读后有收获?

逛逛衣服店,鼓励作者写出更好文章。

weinxin
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
HH

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • thesadfrog 0

      猪一样的设计,如果有500个商品。5万个,500万个商品,这个字符串得多大?