mysql行转列(拆分字符串场景)
2015-07-01 17:04
585 查看
一对多没有建立中间表的时候经常会采用分隔符的形式将“多”存储在“一”的一个字段里,这样做的代价是无法向一对多的时候那样直接关联查询,一般采用在程序中分割后分别查询的办法。如下图:
如何才能直接用sql语句查询出下图的效果呢?
可以借助一个序号表,该表中除了连续的id没有其它字段,id的值范围取决于"一"中存储的信息拆分后的数量。
实现sql:
如何才能直接用sql语句查询出下图的效果呢?
可以借助一个序号表,该表中除了连续的id没有其它字段,id的值范围取决于"一"中存储的信息拆分后的数量。
实现sql:
SELECT NAME, REPLACE( SUBSTRING_INDEX(mobile, ',', a.id), CONCAT( SUBSTRING_INDEX(mobile, ',', a.id - 1), ',' ), '' )AS mobile FROM squence a CROSS JOIN( SELECT NAME, CONCAT(mobile, ',')AS mobile, LENGTH(mobile)- LENGTH(REPLACE(mobile, ',', ''))+ 1 AS size FROM `user` )b ON a.id <= b.size
相关文章推荐
- mysql密码为空,给设置密码
- mysql 存储过程事务
- mysql 复制原理图
- mysql 中的bool值
- 调mysql函数从1开始生成自增序列值
- rhel6.5上的mysql5.5.30安装
- MySQL按日期月份分区实例解析
- mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication
- MySQL PDO连接与操作
- MySQL中进行树状所有子节点的查询
- 沃森Mysql数据库修复工具
- MYSQL多表联合查询
- 64位win7下mysql5.6免安装
- MYSQL 编码设置
- Mysql:This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
- Mysql主从库同步错误:1062 Error 'Duplicate entry '1438019'
- mysql第三天 事务
- mysql foreach case FIND_IN_SET
- nodejs之mysql连接池
- mysql 视图示例