售前咨询
技术支持
渠道合作

MySQL行转列

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保存的方式来做。

 

 

文章转载来自:ttlsa.com

上一篇:

下一篇:

相关文章