mysql列轉行 行轉列


 

列轉行

SELECT 
     flag
    ,substring_index(substring_index(t.context,',', b.help_topic_id + 1), ',', -1) as result
FROM (
    select 'aa' as flag,'1,2,3,4,5,6,7' as context union all
    select 'bb' as flag,'1,2,3,4,5,6' as context union all
    select 'cc' as flag,'1,2,3,4,5' as context union all
    select 'dd' as flag,'1,2,3,4' as context union all
    select 'ee' as flag,'1,2,3' as context 
) t 
join (
    select 0 as help_topic_id union all
    select 1 as help_topic_id union all
    select 2 as help_topic_id union all
    select 3 as help_topic_id union all
    select 4 as help_topic_id union all
    select 5 as help_topic_id union all
    select 6 as help_topic_id union all
    select 7 as help_topic_id union all
    select 8 as help_topic_id union all
    select 9 as help_topic_id
) b 
    ON b.help_topic_id < (LENGTH(t.context) - LENGTH(REPLACE(t.context, ',', '')) + 1)
order by flag,result
;

 

行轉列使用group_concat函數即可

select
     name
    ,group_concat(age) as ages
from (
    select 'a' as name, 0 as age union all
    select 'b' as name, 1 as age union all
    select 'b' as name, 2 as age union all
    select 'c' as name, 3 as age union all
    select 'c' as name, 4 as age union all
    select 'c' as name, 5 as age union all
    select 'd' as name, 6 as age union all
    select 'd' as name, 7 as age union all
    select 'd' as name, 8 as age union all
    select 'd' as name, 9 as age
) b 
group by name
;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM