设为首页收藏本站
查看: 102|回复: 0

[PHP] mysql行转列(拆分字符串场景)_MySQL

[复制链接]

论坛元老

Rank: 6Rank: 6

积分
34274
主题
17031
UID
1347
M币
67
贡献
17176

  • 发表于 2017-5-12 16:11:00 | 显示全部楼层 |阅读模式
    一对多没有建立中间表的时候经常会采用分隔符的形式将“多”存储在“一”的一个字段里,这样做的代价是无法向一对多的时候那样直接关联查询,一般采用在程序中分割后分别查询的办法。如下图:


    如何才能直接用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
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    在我站开通SVIP可同时获得17个站点VIP资源 立即登录 立即注册
    快速回复 返回顶部 返回列表