Mysql查询中null值的坑
今天看看可能会受null值影响的语句有哪些。
一、count(列名)
当某字段存在 null值 时,count(列名)
Mysql数据库中,有时候会遇到字段为null的情况,导致查询的结果可能与预期的不一致。 今天看看可能会受null值影响的语句有哪些。 一、count(列名) 当某字段存在 null值 时,count(列名) 是不会把 null 值计算出来; count(*) , count(1) ,null值会被计算入内。 数据表如下:
二、null值不=null 判断字段是否为null,要使用is null,不能使用=null
三、NULL值排序 如果使用ORDER BY子句以升序对结果集排序,MySQL认为NULL值低于其他值,因此,它首先显示NULL值。
四、group by null 即使NULL不等于NULLmysql查询,但是在GROUP BY子句中的两个NULL值也是相等的。 修改表的数据如下:
可以看到runoob_title为'test5'的记录没有被查询出来,因为即使NULL不等于NULL,但是在GROUP BY子句中的两个NULL值也是相等的。 五、not in 与null 1.not in 子查询中包含null值时,查询结果为空。 新建数据表test3 test2表如下图: test2中不存在runoob_id为4 的记录。
not in的实现原理是,对每一个table1.name和每一个table2.name(括号内的查询结果)进行不相等比较(!=)。 sql中任意!=null的运算结果都是false,所以如果table2中存在一个null,not in的查询永远都会返回false,即查询结果为空 2.not in 语句不会对null值进行匹配,即查询不到null值记录 六、in与null in语句中不会对null值进行匹配,即查询不到null值记录 七、count(distinct 列名1,列名2,列名n) 当使用 count(distinct col1, col2)查询时,如果其中一列为 NULL,那么即使另一列有不同的值,那么查询的结果也会将数据丢失。 test2表新增一行数据
可以看到,每条数据都是能查询到的。
可以看到,runoob_title为’test3‘的记录没有被查询出来。 总结: 微信号|数据分析之路data (编辑:源码网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |