mysql怎样将一行变成多行

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


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);
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容