SQL中IF函数使用方法

发现问题:

在用到if函数的时候,qiu4_others总是没跑出数据来,代码如下:

SELECT count(if(c.parentid is NOT NULL,c.parentid,NULL)) AS qiu4_qiu3,
       count(if(c.parentid is NULL,c.parentid,NULL)) AS qiu4_others, 
       count(if(b.parentid is  NOT NULL AND c.parentid is  NOT NULL,b.parentid,NULL)) AS qiu4_qiu3_qiu5,
       count(if(b.parentid is  NOT NULL AND c.parentid is  NULL,b.parentid,NULL)) AS qiu4_others_qiu5
FROM
    (
    SELECT DISTINCT parentid
    FROM fdm.fdm_mongo_study_group_student_ref_new_chain
    WHERE dp = 'ACTIVE'
        AND studylessonid in (3111,3121,3131,3141,3151,3161,4510,5510)   ----秋4
    )a
LEFT JOIN
    (
    SELECT DISTINCT parentid
    FROM fdm.fdm_mongo_study_parent_join_ref_new_chain
    WHERE dp = 'ACTIVE'
        AND studylessonid in (3411,3421,3436,3441,3451,3461,16001,17001)  ---秋5
    )b ON a.parentid = b.parentid
LEFT JOIN
    (
    SELECT DISTINCT parentid
    FROM fdm.fdm_mongo_study_group_student_ref_new_chain
    WHERE dp = 'ACTIVE'
        AND studylessonid in (3410,3420,3430,3440,3450,3460,4410,5410)   ---秋3
    )c ON a.parentid = c.parentid 

找原因:

按照这个说明来看,如果不是null,那么就返回“c.parentid”这个值,并且count对“c.parentid”这个值进行计数,怎么就不行呢?然后去了百度等相关搜索查阅,没有所以然。
总结了可能导致问题的2个原因:

1.IF中,不能用“c.parentid is NULL”;
2.“c.parentid”计数出现了问题。

image.png

期间,我还把“c.parentid”改成了其他值,跑的时候直接报错,如下:

count(if(c.parentid is NULL,a.parentid,NULL)) AS qiu4_others,

资料上显示是可以返回其他值的啊?一定是哪里错了,于是加上了‘’试了试,发现,妥了.....

小结:

IF函数,返回的是“c.parentid”代表的值,本case中,“c.parentid”代表的值是null,所以count(null)当然是0,这也说明了,为什么其他3个数据都没问题,唯独这一个有问题。

ps:IF里面也可以用and逻辑关系,网上没有求证,于是试着跑了下,结果是正确的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,759评论 0 38
  • 包(lib)、模块(module) 在Python中,存在包和模块两个常见概念。 模块:编写Python代码的py...
    清清子衿木子水心阅读 9,234评论 0 27
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 10,721评论 0 21
  • 说明:go在windows下可以导出静态库和动态库,静态库是.a文件是不能给vs使用的,也没法转成vs使用的静态库...
    龙山文豪阅读 5,353评论 0 0
  • 凡夫俗念扰清尘, 买车置房燃爆竹。 烟花冲天污空气, 爆鸣声声惊人魂。
    执意1阅读 1,544评论 0 1

友情链接更多精彩内容