基础-NULL的处理
NULL的处理往往是查询过程的处理重点,本文探讨一些可能的情况
1.NULL的特性
# NULL与任何值比较或运算的结果都是NULL,包括其本身 SELECT 1>NULL;# NULL SELECT 1+NULL;# NULL SELECT NULL=NULL;# NULL # NULL的判定必须使用IS NULL或IS NOT NULL SELECT NULL IS NULL;# 1
2.聚合函数中的NULL
# 聚合函数默认忽略NULL # 假定colname列中存在NULL SELECT COUNT(colname) FROM tbname;# 返回不包含NULL的总数 SELECT AVG(colname) FROM tbname; SELECT SUM(colname)/COUNT(colname) FROM tbname;# 等价于上行查询 # 假定colname列中存在NULL,NULL视为0,求colname的平均值 SELECT AVG(IF(colname IS NULL,0,colname)) FROM tbname; SELECT SUM(colname)/COUNT(*) FROM tbname;# 等价于上行查询 # 假定colname列中存在NULL,求NULL的个数 SELECT SUM(colname IS NULL) FROM tbname; # 假定colname列全为NULL,聚合函数的结果 SELECT COUNT(colname) FROM tbname;# 返回0 SELECT MAX(colname) FROM tbname;# 返回NULL # 假定colname1列存在NULL,求colname1列NULL值对应记录的colname2列的平均值 SELECT AVG(IF(colname1 IS NULL,colname2,NULL)) FORM tbname; # 假定colname1列存在NULL,按colname1是否为NULL分组求colname2列的总和 SELECT IF(colname1 IS NULL,'NULL汇总','其他汇总') AS group_name, SUM(colname2) FROM tbname GROUP BY IF(colname1 IS NULL,'NULL汇总','其他汇总');
3.联接中的NULL
未完待续
4.相关题目
简单查询:SQL10 用where过滤空值练习
涉及联接:SQLW3 分析客户逾期情况
涉及联接:SQL34 统计复旦用户8月练题情况
更多知识见专栏
#SQL菜鸟#MySQL的使用 文章被收录于专栏
阅读顺序为:入门->基础(务必阅读,尤其是SELECT语句的执行顺序)->进阶->应用(综合使用)。 这是一部较为系统的大纲式SQL查询教程,学习过程中应同步参考官方文档或其他相关资料,交叉阅读方能更好掌握知识,学会后基本可以完成站内90%以上的相关试题。 DDL及DML的其他内容后续更新。 如有帮助请您点赞收藏订阅,如有疑惑或指正请评论。 共同学习共同进步!