我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL中怎么实现行转列操作

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL中怎么实现行转列操作

本篇文章给大家分享的是有关MySQL中怎么实现行转列操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

  表的基本结构

  改造前表结构:

  CREATE TABLE orders(

  orders_id INT NOT NULL AUTO_INCREMENT COMMENT '订单ID',

  good_ids VARCHAR(200) NOT NULL COMMENT '商品ID字符串',

  PRIMARY KEY(orders_id)

  );

  INSERT INTO orders VALUES(NULL, '1,2,3,4,5');

  INSERT INTO orders VALUES(NULL, '11,12,13,14,15');

  INSERT INTO orders VALUES(NULL, '21,22,23,24,25');

  改造后表结构:

  -- orders 表不变

  CREATE TABLE orders(

  orders_id INT NOT NULL AUTO_INCREMENT COMMENT '订单ID',

  good_ids VARCHAR(200) NOT NULL COMMENT '商品ID字符串',

  PRIMARY KEY(orders_id)

  );

  -- 新增订单商品表

  CREATE TABLE order_goods(

  order_goods_id INT NOT NULL AUTO_INCREMENT COMMENT '订单商品ID',

  orders_id INT NOT NULL COMMENT '订单ID',

  goods_id INT NOT NULL COMMENT '商品ID',

  PRIMARY KEY(order_goods_id)

  );

  实现行转列

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

  SELECT o.orders_id,

  SUBSTRING_INDEX(SUBSTRING_INDEX(o.good_ids, ',', h.help_topic_id), ',', -1)

  FROM orders AS o

  JOIN mysql.help_topic AS h

  ON h.help_topic_id <= -="" where="" help_topic_id=""> 0

  ORDER BY o.orders_id;

  分解SQL进行解释

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

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

  SELECT o.orders_id,

  SUBSTRING_INDEX(o.good_ids, ',', 2)

  FROM orders AS o;

  +-----------+-------------------------------------+

  | orders_id | SUBSTRING_INDEX(o.good_ids, ',', 2) |

  +-----------+-------------------------------------+

  | 1 | 1,2 |

  | 2 | 11,12 |

  | 3 | 21,22 |

  +-----------+-------------------------------------+

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

  SELECT o.orders_id,

  SUBSTRING_INDEX(

  SUBSTRING_INDEX(o.good_ids, ',', 2),

  ',',

  -1

  ) AS good_id

  FROM orders AS o;

  +-----------+---------+

  | orders_id | good_id |

  +-----------+---------+

  | 1 | 2 |

  | 2 | 12 |

  | 3 | 22 |

  +-----------+---------+

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

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

  SELECT o.orders_id,

  SUBSTRING_INDEX(SUBSTRING_INDEX(o.good_ids, ',', h.help_topic_id), ',', -1) AS good_id

  FROM orders AS o

  JOIN mysql.help_topic AS h

  ON h.help_topic_id <= -="" where="" help_topic_id=""> 0

  ORDER BY o.orders_id;

  +-----------+---------+

  | orders_id | good_id |

  +-----------+---------+

  | 1 | 1 |

  | 1 | 2 |

  | 1 | 3 |

  | 1 | 4 |

  | 1 | 5 |

  | 2 | 15 |

  | 2 | 11 |

  | 2 | 12 |

  | 2 | 13 |

  | 2 | 14 |

  | 3 | 22 |

  | 3 | 23 |

  | 3 | 24 |

  | 3 | 25 |

  | 3 | 21 |

  +-----------+---------+

以上就是MySQL中怎么实现行转列操作,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL中怎么实现行转列操作

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL实现列转行与行转列的操作代码

目录引言列转行(Pivoting)示例数据转编程网换前查询结果列转行 SQL 语句转换后查询结果行转列(Unpivoting)示例数据转换前查询结果行转列 SQL 语句转换后查询结果引言在处理数据时,我们常常会遇到需要将表中的列(字段)转
MySQL实现列转行与行转列的操作代码
2024-09-25

mysql动态行转列怎么实现

在MySQL中将动态行转列可以使用GROUP_CONCAT函数以及动态SQL语句来实现。以下是一个示例代码:假设有一个表格名为data,包含以下数据:idnamevalue1attribute1101attribute2202
mysql动态行转列怎么实现
2024-04-09

MySQL实现行列转换

实际应用中,会遇到需要把表的某些行转换成列,或者把列转换成行的情况。比如一张表在数据库中是这样的:图1但是,需要的结果可能是这样:图2这个时候就得行列转换了。1.行转列的几种方法1.1 case... when ... then .
2022-07-08

sqlserver行转列怎么实现

在 SQL Server 中,可以使用 PIVOT 操作符将行转列。以下是一个示例:假设有一个名为 StudentScore 的表,包含以下数据:StudentIDSubjectScore1Math801English752
sqlserver行转列怎么实现
2024-04-09

怎么在python中实现序列操作

今天就跟大家聊聊有关怎么在python中实现序列操作,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;
2023-06-14

oracle多行转多列怎么实现

在Oracle中,可以使用PIVOT函数将多行数据转换为多列数据。以下是一个示例:假设有一个名为sales的表,包含以下数据:regionproductsales_amountNorthA100NorthB200NorthC
oracle多行转多列怎么实现
2024-04-22

oracle多行转一行多列怎么实现

在 Oracle 中将多行数据转换为一行多列可以使用 LISTAGG 函数或者 PIVOT 操作。使用 LISTAGG 函数:SELECT LISTAGG(column_name, ', ') WITHIN GROUP
oracle多行转一行多列怎么实现
2024-04-17

编程热搜

目录