在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 --------------------

我在mysql数据库中有一个表,表中的一列用逗号分隔存储值

现在,我想将该行拆分为多行,其中出现了逗号符号

例如:

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 |
+----+---+

请提供一些代码。把我们引向你试过你所说的那部分。