mysql中实现一行变多行

mysql中实现一行变多行 要求是time_slots是一个text,里面有多个time_slot_id,每个time_slot_id按照.进行连接,现在需要将这些.进行拆分,因为我们要把拆分出来的time_slot_id和别的表进行关联

select code,
       t1.title,
       department_name,
       t1.type,
       t2.title,
       week,
       start_time,
       end_week,
       end_time,
       t2.type
from (
         SELECT code,
                title,
                department_name,
                type,
        SUBSTRING_INDEX(SUBSTRING_INDEX(time_slots, ., n.n), ., -1) AS time_slot
         FROM cn_work_hours
                  CROSS JOIN
              (SELECT 1 AS n
               UNION ALL
               SELECT 2
               UNION ALL
               SELECT 3
               UNION ALL
               SELECT 4
               UNION ALL
               SELECT 5
               UNION ALL
               SELECT 6
               UNION ALL
               SELECT 7
               UNION ALL
               SELECT 8
               UNION ALL
               SELECT 9
               UNION ALL
               SELECT 10
                  ) n
         WHERE  (n.n <= CHAR_LENGTH(time_slots) - CHAR_LENGTH(REPLACE(time_slots, ., )) + 1) and status = 1 and department_name = IS部
     ) t1
         left join (
    select id,
           title,
           week,
           start_time,
           end_week,
           end_time,
           type
    from cn_work_time_slot
) t2
 on t1.time_slot = t2.id
经验分享 程序员 微信小程序 职场和发展