MYSQL 行转列优化

背景: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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值