php - 如何将逗号分隔的字符串转换为单列?

标签 php mysql sql phpmyadmin

表:

id    brand    group
1     adidas    1,2
2     puma      1
3     asianone  1,2,3

我想要什么结果:

id    brand    group
1     adidias  1
2     adidias  2
3     puma     1
4     asianone 1
5     asianone 2
6     asianone 3

其中 id 是自增的..

最佳答案

SELECT @id:=@id+1 AS id,
       `brand`,
       `group` 
FROM
(SELECT
  `id`, 
  `brand`,
   SUBSTRING_INDEX(SUBSTRING_INDEX(`group`, ',', n.digit+1), ',', -1) AS `group`
FROM
  Table1
  INNER JOIN
  (SELECT 0 AS 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) n
  ON LENGTH(REPLACE(`group`, ',' , '')) <= LENGTH(`group`)-n.digit
  Order by ID,`group`) AS T,(SELECT @id:=0) AS R;

输出

id  brand   group
1   adidas      1
2   adidas      2
3   puma        1
4   asianone    1
5   asianone    2
6   asianone    3

演示

http://sqlfiddle.com/#!9/be29c2/31

有关解释,请转到此链接并查看我的回答

MySql : Convert Column data to row

关于php - 如何将逗号分隔的字符串转换为单列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49745359/

相关文章:

php - 按一个列值对行数据进行分组,并使用另一列值填充每组中的子数组

php - 在 Windows 上发出 PHP cURL 请求从代理中产生 "400 Bad Request"

php - 图像未加载到轮播中

c# - MySql.Data 通过反射

mysql - 如何在字符串中匹配下划线 - MYSQL

sql - 错误 : Document processed/posted in sql

mysql - 将 IN 运算符与子查询结合使用

php - 当我使用 setFetchMode(PDO::FETCH_ASSOC) 时,为什么行计数和结果不同时显示

php - 使用 Jquery 和 Ajax 从 PHP 调用特定函数

php - 提交登录表单后,URL 保留在操作 php 上