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

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

如何才能直接用sql语句查询出下图的效果呢?

可以借助一个序号表,该表中除了连续的id没有其它字段,id的值范围取决于"一"中存储的信息拆分后的数量。

实现sql:

SELECTNAME,REPLACE(SUBSTRING_INDEX(mobile, ',', a.id),CONCAT(SUBSTRING_INDEX(mobile, ',', a.id – 1),','),'')AS mobileFROMsquence aCROSS JOIN(SELECTNAME,CONCAT(mobile, ',')AS mobile,LENGTH(mobile)- LENGTH(REPLACE(mobile, ',', ''))+ 1 AS sizeFROM`user`)b ON a.id <= b.size

版权声明:本文为博主原创文章,未经博主允许不得转载。

,筑起梦想的鸟巢,开始人生的长跑,领先每回的冲刺,

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

相关文章:

你感兴趣的文章:

标签云: