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