实现mysql一列转多行

1. 整体流程

首先,我们需要创建一个示例表,包含一个字段,将其数据进行一列转多行操作,最终得到多行数据。

表结构如下:

id data
1 A,B,C

2. 具体步骤

  1. 将数据字段按逗号分隔成多行数据
  2. 使用UNION ALL将多行数据合并

3. 代码实现

步骤1

-- 创建示例表
CREATE TABLE test (
    id INT,
    data VARCHAR(255)
);

-- 插入示例数据
INSERT INTO test VALUES (1, 'A,B,C');

-- 将数据字段按逗号分隔成多行数据
SELECT id, 
       SUBSTRING_INDEX(SUBSTRING_INDEX(data, ',', n.digit+1), ',', -1) as value
  FROM test
  JOIN (SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2) n
 WHERE n.digit < (LENGTH(data) - LENGTH(REPLACE(data, ',', ''))+1);

步骤2

-- 使用UNION ALL将多行数据合并
SELECT id, 
       SUBSTRING_INDEX(SUBSTRING_INDEX(data, ',', n.digit+1), ',', -1) as value 
  FROM test
  JOIN (SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2) n
 WHERE n.digit < (LENGTH(data) - LENGTH(REPLACE(data, ',', ''))+1)
UNION ALL
SELECT id,
       ''
  FROM test
 WHERE data = '';

4. 类图

classDiagram
    class Table{
        id: INT
        data: VARCHAR(255)
    }

通过以上代码实现,你就可以将mysql中的一列数据转换为多行数据了。祝你学习进步!