mysql把一个字段值拆分,行转列
时间: 2024-11-25 07:16:34 浏览: 10
MySQL水平拆分(读书笔记整理)
MySQL 中将一个字段的值拆分成多列通常通过`UNNEST()`、`STRING_TO_ARRAY()`函数或者是自连接结合`GROUP_CONCAT()`来实现。这里我们以`STRING_TO_ARRAY()`为例,它用于将字符串分割成数组,然后你可以用`unnest()`将这个数组转换为行。
假设有一个名为`students`的表,其中有一个`skills`字段存储技能ID,逗号分隔,你想将其拆分为独立的列:
```sql
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
skills VARCHAR(255)
);
-- 假设skills字段的值为 '1,2,3'
SELECT id, name,
UNNEST(STRING_SPLIT(skills, ',')) AS skill_1, -- 把逗号分隔符换成其他分隔符,如';'等
UNNEST(STRING_SPLIT(skills, ',')) AS skill_2,
UNNEST(STRING_SPLIT(skills, ',')) AS skill_3
FROM students;
```
这样,每一行就会显示`id`、`name`以及每个技能对应的列。
阅读全文