码迷,mamicode.com
首页 > 数据库 > 详细

mysql行转列(拆分字符串场景)

时间:2015-07-01 18:18:44      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:mysql   行转列   

一对多没有建立中间表的时候经常会采用分隔符的形式将“多”存储在“一”的一个字段里,这样做的代价是无法向一对多的时候那样直接关联查询,一般采用在程序中分割后分别查询的办法。如下图:

技术分享

如何才能直接用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   行转列   

原文地址:http://blog.csdn.net/baokx/article/details/46712071

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!