实现mysql一列转多行
1. 整体流程
首先,我们需要创建一个示例表,包含一个字段,将其数据进行一列转多行操作,最终得到多行数据。
表结构如下:
id | data |
---|---|
1 | A,B,C |
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中的一列数据转换为多行数据了。祝你学习进步!