在MySql中将行拆分为多列
我在mysql数据库中有一个表,表中的一列用逗号分隔存储值 现在,我想将该行拆分为多行,其中出现了逗号符号 例如:在MySql中将行拆分为多列,mysql,split,Mysql,Split,我在mysql数据库中有一个表,表中的一列用逗号分隔存储值 现在,我想将该行拆分为多行,其中出现了逗号符号 例如: id column1 ---------------------------- 1 a,b,c 2 c,f 3 s,d,f,g 4 p 5 k,h,s 像这样 有了这个表数据,我想如下所示 id column1 --------------------
id column1
----------------------------
1 a,b,c
2 c,f
3 s,d,f,g
4 p
5 k,h,s
像这样
有了这个表数据,我想如下所示
id column1
----------------------------
1 a
1 b
1 c
2 c
2 f
3 s
3 d
3 f
3 g
4 p
5 k
5 h
5 s
等等
有谁能为我提供一个解决方案,如何通过mysql查询获得所需的输出
在Sql中我使用了split函数,但如果在mysql中使用相同的函数,它就不起作用了
提前感谢,,
帕尼·库马尔。你从错误的地方出发了。永远不要存储逗号分隔的值。也就是说,你正朝着正确的方向前进,所以这里有一种从a到b的方法
DROP TABLE IF EXISTS my_bad_table;
CREATE TABLE my_bad_table
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,column1 VARCHAR(20) NOT NULL
);
INSERT INTO my_bad_table VALUES
(1,'a,b,c'),
(2,'c,f'),
(3,'s,d,f,g'),
(4,'p'),
(5,'k,h,s');
SELECT * FROM my_bad_table;
+----+---------+
| id | column1 |
+----+---------+
| 1 | a,b,c |
| 2 | c,f |
| 3 | s,d,f,g |
| 4 | p |
| 5 | k,h,s |
+----+---------+
SELECT * FROM ints;
+---+
| i |
+---+
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
+---+
CREATE TABLE my_good_table AS
SELECT DISTINCT id
, SUBSTRING_INDEX(SUBSTRING_INDEX(column1,',',i+1),',',-1) x
FROM my_bad_table
, ints
ORDER
BY id
, x;
ALTER TABLE my_good_table ADD PRIMARY KEY(id,x);
SELECT * FROM my_good_table;
+----+---+
| id | x |
+----+---+
| 1 | a |
| 1 | b |
| 1 | c |
| 2 | c |
| 2 | f |
| 3 | d |
| 3 | f |
| 3 | g |
| 3 | s |
| 4 | p |
| 5 | h |
| 5 | k |
| 5 | s |
+----+---+
请提供一些代码。把我们引向你试过你所说的那部分。