MySQL的coalesce使用技巧

在日常业务SQL中我们会涉及到时间排序,有些业务场景会根据各个时间字段值来做判断非空来排序。例如:

A时间优先:按照A时间降序排序

B时间优先:按照B时间降序排序,无B时间再按照A时间降序排序

C时间优先:按照C时间降序排序,无C时间再按照B时间降序,无B时间再按照A时间降序。

示例:ORDER BY IFNULL(IFNULL(C,B),A) DESC

但是在实际场景查询中SQL内置在计算的时候这样运行效率很差。所以我们可以考虑用另外一个函数代替

COALESCE:返回参数中的第一个非空表达式(从左向右依次类推); 

 

select coalesce(null,2,3); // Return 2

select coalesce(null,null,3); // Return 3

select coalesce(1,2,3); // Return 1

上面的ORDER BY排序可以改为COALESCE(C,B,A)

假如某个字段默认是null,你想其返回的不是null,而是比如0或其他值,也可以使用这个函数 COALESCE(字段名,0) as value

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值