mysql 一行转多列

/*
drop table tbl_name;
create table tbl_name (ID int ,mSize varchar(100));
insert into tbl_name values (1,'tiny,small,big');
insert into tbl_name values (2,'small,medium');
insert into tbl_name values (3,'tiny,big');
*/
SELECT * from tbl_name


-- 参考:
-- http://cenalulu.github.io/mysql/column-row-reverse/
-- http://www.uncletoo.com/html/mysql/1060.html
SELECT ID,mSize, substring_index(substring_index(m.mSize,',',num),',',-1) splitText 
from (
SELECT *, 
@row_number := CASE
WHEN  @customer_no = id  THEN  @row_number + 1
ELSE  1
END   AS  num,
@customer_no := id  as  idsa
from (
SELECT b.* from (SELECT *, LENGTH(mSize) - LENGTH( REPLACE(mSize,',','') )+ 1 alls from tbl_name) a join (SELECT *, LENGTH(mSize) - LENGTH( REPLACE(mSize,',','') )+ 1 alls from tbl_name) b where a.alls <= b.alls
) s,(SELECT  @customer_no := 0,@row_number := 0)  as  t
) m
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值