欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MYSQL 行转列优化

程序员文章站 2024-03-19 12:13:22
...

背景:mysql里写了一个存储过程,需要把一个详情表里的某一列里的不同值转成列名,并取其他列的数据。

优化前:筛选详情表目标列每个值,然后和主表关联,目标列有6个不同值,关联6次,存储过程的执行时间是25s.

优化后:详情表分组,然后判断目标列的值把每个值都转列,执行时间0.5s,快了很多,具体sql语句是:

SELECT ID,
MAX(CASE KEY WHEN 'SD' THEN DATE_FORMAT(END_TIME_, '%Y-%m-%d') ELSE NULL END) AS SAD
FROM TABLE_NAME
GROUP BY ID

还有稍微复杂一点,判断多个值然后把这多个值转成一列,具体sql语句是:

SELECT ID,
MAX(CASE KEY WHEN 'OM' THEN ASSIGNEE	
             WHEN 'PM' THEN ASSIGNEE 
             WHEN 'TM' THEN ASSIGNEE ELSE	NULL END) AS MO
FROM TABLE_NAME
GROUP BY ID

 

相关标签: SQL

上一篇: 拓扑排序(代码理解)

下一篇: wnp