mysql怎么把一行拆成多行
时间: 2023-09-04 17:16:18 浏览: 151
如果你需要把一行数据拆分成多行,可以使用MySQL中的UNION操作符。UNION操作符允许你将多个SELECT语句的结果组合成一个结果集。
举个例子,假设你有如下表格:
```
+----+-------+
| id | names |
+----+-------+
| 1 | A,B,C |
+----+-------+
```
如果你想将每个名字拆分成一行,可以使用如下语句:
```sql
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(names, ',', n.digit+1), ',', -1) as name
FROM mytable
CROSS JOIN
(
SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL
SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9
) n
WHERE n.digit < LENGTH(names) - LENGTH(REPLACE(names, ',', ''))+1;
```
这个语句使用了SUBSTRING_INDEX函数来对names字段进行拆分,然后使用CROSS JOIN和一个数字序列来生成多行数据。
执行上述语句后,你将得到如下结果:
```
+------+
| name |
+------+
| A |
| B |
| C |
+------+
```
注意,这个语句的效率可能不太高,因为它需要使用UNION ALL操作符多次执行。如果你需要处理大量数据,建议使用其他方法来解决这个问题。
阅读全文