mysql怎样将一行变成多行

2022-04-29  本文已影响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);
上一篇下一篇

猜你喜欢

热点阅读