原地址:https://segmentfault.com/a/1190000009676728
sum(if(actual_num>0, share_post,0))
其中SUM的意思浅显易懂,求和嘛。IF也十分清晰:判断嘛。而且if的第一个参数很明显就是条件,那另外两个参数是什么呢?
查了一下资料:
语法:IF(expr1,expr2,expr3)
其中,expr1是判断条件,expr2和expr3是符合expr1的自定义的返回结果。
用处:当从数据库中查询出来的结果需要转换成中文或是其他自定义的格式显示在网页上的时候,可以直接在sql中处理
咳咳,看懂了么?第二个参数和第三个参数是结果。。。那用哪个呢?
简单通俗的解释是这样的:
if(a,b,c)如果a成立,执行b,不成立执行C
好吧,其实就是这么简单。
所以,图片中的这个语句意思就是:如果actual_num>0的话,就求share_post的和,否则就是0(其实是对0求和,还是0)
我们可以看出,如果数据表中的某个字段只有两种情况,可以使用if函数。
上面说如果数据表中的某个字段只有两种情况,可以使用if函数,那多余两种情况呢?
在查资料的时候我看到了一个大神的分享:
如果数据表中的某字段多余两种情况时,可以使用case...when
举例如下:
select
case
when oi.order_type_id='SALE' then '销售'
when oi.order_type_id='PURCHASE' then '采购'
end as 订单类型
from order_info as oi;
然后在结果集中取出字段名为‘订单类型’的数据即可。
我们一般的习惯都是在数据库查出来字段,然后在代码中处理数据的显示,但是这样做比较麻烦,使用case...when的方法可以直接显示我们所要的。可以直接在sql语句中操作,将从数据库中查询出来的信息不要直接放入结果集中,而是将这些信息转换成页面需要显示的数据后再存入结果集中。(当然,完全看个人习惯,拿出来处理也是可取的)
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。