MySQL 使用序列化表的方法实现行转列
2016-03-28 21:37
399 查看
创建 t_user表
“id” “name” “phone”
“1” “张三” “18294829382,18492819382,18829392918”
“2” “李四” “13828374827,18782939291,15929392919,14728392918”
“3” “王五” “15929392919”
创建序列表
使用序列化表的方法实现行转列
“user_name” “mobile”
“张三” “18294829382”
“张三” “18492819382”
“张三” “18829392918”
“李四” “13828374827”
“李四” “18782939291”
“李四” “15929392919”
“李四” “14728392918”
“王五” “15929392919”
CREATE TABLE `t_user` ( `id` int(30) NOT NULL AUTO_INCREMENT, `user_name` varchar(30) DEFAULT NULL, `mobile` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 insert into `t_user`(`id`,`user_name`,`mobile`) values (1,'张三','18294829382,18492819382,18829392918'); insert into `t_user`(`id`,`user_name`,`mobile`) values (2,'李四','13828374827,18782939291,15929392919,14728392918'); insert into `t_user`(`id`,`user_name`,`mobile`) values (3,'王五','15929392919');
“id” “name” “phone”
“1” “张三” “18294829382,18492819382,18829392918”
“2” “李四” “13828374827,18782939291,15929392919,14728392918”
“3” “王五” “15929392919”
创建序列表
CREATE TABLE `t_sequence` ( `id` int(10) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; /*Data for the table `t_sequence` */ insert into `t_sequence`(`id`) values (1); insert into `t_sequence`(`id`) values (2); insert into `t_sequence`(`id`) values (3); insert into `t_sequence`(`id`) values (4); insert into `t_sequence`(`id`) values (5); insert into `t_sequence`(`id`) values (6); insert into `t_sequence`(`id`) values (7); insert into `t_sequence`(`id`) values (8); insert into `t_sequence`(`id`) values (9); insert into `t_sequence`(`id`) values (10);
使用序列化表的方法实现行转列
SELECT user_name ,REPLACE(SUBSTRING(SUBSTRING_INDEX(mobile,',',a.id),CHAR_LENGTH( SUBSTRING_INDEX(mobile,',',a.id-1))+1),',','')AS mobile FROM t_sequence a CROSS JOIN ( SELECT user_name,CONCAT(mobile,',')AS mobile,LENGTH(mobile)- LENGTH(REPLACE(mobile,',',''))+1 size FROM t_user b)b ON a.id<=b.size
“user_name” “mobile”
“张三” “18294829382”
“张三” “18492819382”
“张三” “18829392918”
“李四” “13828374827”
“李四” “18782939291”
“李四” “15929392919”
“李四” “14728392918”
“王五” “15929392919”
相关文章推荐
- 免安装版MySql安装与配置
- 数据库高效编程(mysql)
- batch insert 1 million datas into mysql
- mysql查看正在执行的sql
- 《MySQL必知必会学习笔记》:数据分组
- 《MySQL必知必会学习笔记》:聚集函数
- mac安装mysql和修改mysql密码
- MySQL 数据库实现远程连接
- Wampserver #1045 无法登录 mysql 服务器
- Mysql Explain 详解
- mysql查看表结构的几种方式
- Mysql To Charts(五)--routers文件
- Navicat for MySQL每次打开数据库时,总是弹出“取得ER图表信息”框的解决方法
- 针对mysql基础数据类型测试
- MySQL 分区表
- Mysql中文乱码问题(unbutu)
- MySQL 5.7 版本登录报 error 1524: plugin ... in not loaded
- mysql-用户管理 用户无法本地登陆
- Mysql 语句汇总(性能篇)
- mysql5.6源码安装