基础-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的使用 文章被收录于专栏
由于专栏功能问题造成阅读不便,本专栏放弃更新,所有内容将迁移到计算机编程合集专栏下