coalesce( sum(score), 0) : 返回第一个不为NULL的参数,如果所有参数都为NULL,此函数返回NULL;当它使用2个参数时,和IFNULL函数作用相同。
ifnull(u.name,'')
if( isnull(t2.name), 0, t2.name) as stu_name
mysql 不推荐使用 (is not null) 和 (not in 进行 子查询),以及它们的替代查询方法
mysql 的查询中,如果使用 (not in 进行 子查询) 或者 (is not null) 后,会让查询速度变得很慢,笔者十分不建议使用。下面有笔者总结的代替方法。 代替 (not in 进行 子查询 ):将子查询 转变为 表连接,相关的逻辑写在 表连接 的关系上 代替 (is not null):将 is not null 的字段,使用 ifnull()替换为其他值,然后 ifnull()!=其他值,就能进行筛选了
示例(https://blog.csdn.net/YABIGNSHI/article/details/102937435):
IFNULL(zla.serialNum,'kong' )!='kong'
在测试环境试验,执行时间从1分钟47秒降为了0.4秒,效果杠杠的。
完整示例:
where (s.supplier_id != '' and IFNULL(s.supplier_id,'label' ) != 'label') and ...
mysql 字段 is not null 和 字段 !=null
https://www.cnblogs.com/wuyun-blog/p/10179832.html
Mysql查询is null,is not null,!=使用或索引
https://www.jianshu.com/p/73cd91ee1f71 : 由图可知,is null, is not null, !=查询, 是可以使用索引的。这和mysql的查询优化有关。不要轻易被网上的一些文章误导。
MySQL中is not null和!=null和<>null的区别 2018.08.07 10:09 4276浏览 在mysql中,筛选非空的时候经常会用到is not null和!=null,这两种方法单从字面上来看感觉是差不多的,其实如果去运行一下试试的话差别会很大! 为什么会出现这种情况呢? null 表示什么也不是, 不能=、>、< … 所有的判断,结果都是false,所有只能用 is null进行判断。 默认情况下,推荐使用 IS NOT NULL去判断,因为SQL默认情况下对!= Null的判断会永远返回0行,但没有语法错误。 如果你一定想要使用!= Null来判断,需要加上这个语句: set ANSI_NULLS off 这时你会发现IS NOT NULL 和 != null 是等效的 一个字段如果设为“NULL”,表示如果这个字段的值为空时,自动插入一个“NULL”值。 一个字段如果设为“NOT NULL”,表示如果这个字段的值为空时,不自动插入“NULL”值(任其无值)。 所以,设为“NULL”的意思反而是“不能无值”(由MYSQL自动赋“NULL”值),而设为“NOT NULL”是“可以无值” 原文来源:https://www.imooc.com/article/50826