mysql 的列转行
2016-03-15 14:29
435 查看
mysql 的列转行想找个函数,但是没有找到
目前是通过有条件的笛卡尔积完成的。
DROP IF EXISTS TABLE pyb_tmp_160315_2
CREATE TABLE pyb_tmp_160315_2 (
id INT,
NAME VARCHAR(200)
) ;
INSERT INTO pyb_tmp_160315_2
VALUES(1,'a'),(2,'a,b'),(3,'a,b,c'),(4,'b'),(5,'d,e')
;
SELECT *
FROM pyb_tmp_160315_2
WHERE 1=1
;
SET @max_num:=0;
SELECT
t0.id,
SUBSTRING_INDEX(SUBSTRING_INDEX( REPLACE(REPLACE(t0.name,'[',''),']','') ,',',t1.row_name_num),',',-1) AS name2
FROM (
SELECT LENGTH(wu.name)-LENGTH( REPLACE(wu.name,',',''))+1 AS name_num,
wu.*
FROM pyb_tmp_160315_2 wu
WHERE 1=1
) t0
JOIN
( SELECT t0.max_num_1 AS row_name_num
FROM (
SELECT @max_num:=@max_num+1 max_num_1
FROM pyb_tmp_160315_2
) t0
WHERE 1=1
AND max_num_1 <= ( SELECT MAX(LENGTH(wui.name)-LENGTH( REPLACE(wui.name,',',''))+1) AS row_department_num FROM pyb_tmp_160315_2 wui )
) t1
ON t1.row_name_num<=t0.name_num
;
目前是通过有条件的笛卡尔积完成的。
DROP IF EXISTS TABLE pyb_tmp_160315_2
CREATE TABLE pyb_tmp_160315_2 (
id INT,
NAME VARCHAR(200)
) ;
INSERT INTO pyb_tmp_160315_2
VALUES(1,'a'),(2,'a,b'),(3,'a,b,c'),(4,'b'),(5,'d,e')
;
SELECT *
FROM pyb_tmp_160315_2
WHERE 1=1
;
SET @max_num:=0;
SELECT
t0.id,
SUBSTRING_INDEX(SUBSTRING_INDEX( REPLACE(REPLACE(t0.name,'[',''),']','') ,',',t1.row_name_num),',',-1) AS name2
FROM (
SELECT LENGTH(wu.name)-LENGTH( REPLACE(wu.name,',',''))+1 AS name_num,
wu.*
FROM pyb_tmp_160315_2 wu
WHERE 1=1
) t0
JOIN
( SELECT t0.max_num_1 AS row_name_num
FROM (
SELECT @max_num:=@max_num+1 max_num_1
FROM pyb_tmp_160315_2
) t0
WHERE 1=1
AND max_num_1 <= ( SELECT MAX(LENGTH(wui.name)-LENGTH( REPLACE(wui.name,',',''))+1) AS row_department_num FROM pyb_tmp_160315_2 wui )
) t1
ON t1.row_name_num<=t0.name_num
;
相关文章推荐
- mysql 的行转列
- mysql dump备份方式 mysql还原操作练习
- Mysql数据库中or的使用
- mysql 账户操作
- MySQL性能优化的最佳经验,随时补充
- mysql5.6+版本主从设置(mysql5.5之后的主从设置跟5.5之前的差别)
- mysql 表操作
- mysql 设置自增主键
- 使用定时器调用mysql的存储过程 -- navicat客户端
- MySQL—一个单引号引发的MYSQL性能损失
- Ubuntu下freeradius-server的安装与mysql-server的关联
- mysql的binlog安全删除
- 培训日报3.14(mysql,guava,穿山甲等)
- mysql 的root show grant for的时候没有 al privileges权限
- ubuntu安装mysql
- MySQL行锁深入研究
- mysql 链接数据库
- MySQL数据库 详解
- mysql数据库主从配置
- mysql数据库去重复