美文网首页
mysql怎样将一行变成多行

mysql怎样将一行变成多行

作者: 春风花草 | 来源:发表于2022-04-29 20:20 被阅读0次

    处理数据时,遇到了需要将一行数据变成多行数据的情况
    如下图数据


    image.png

    需要将数据处理成


    image.png
    相当于将project_manager_id按逗号分隔,分隔后的结果变成多行。

    那么在mysql中要怎么处理呢?

    在这里我们需要用到mysql函数SUBSTRING_INDEX和mysql表mysql.help_topic

    substring_index介绍

    substring_index(str,delim,count)

      str:要处理的字符串
      delim:分隔符
      count:计数
    
    SELECT SUBSTRING_INDEX('23,25,14,13',',',1)
    > 23
    SELECT SUBSTRING_INDEX('23,25,14,13',',',2)
    >23,25
    SELECT SUBSTRING_INDEX('23,25,14,13',',',-1)
    >13 #返回最后一个分隔的数据
    

    通过如下语句,则可实现一行转多行,最终实现上图的效果

    SELECT project_name, SUBSTRING_INDEX(SUBSTRING_INDEX(a.project_manager_id,',',b.help_topic_id + 1),',',- 1) AS project_manager_id
    FROM
     (
    SELECT project_name,project_manager_id
    FROM test_table) a
    JOIN mysql.help_topic b ON b.help_topic_id <
     (LENGTH(a.project_manager_id) - LENGTH(
    REPLACE(a.project_manager_id, ',', '')) + 1);
    

    相关文章

      网友评论

          本文标题:mysql怎样将一行变成多行

          本文链接:https://www.haomeiwen.com/subject/dgosyrtx.html