MySQL 中有关 NULL 的三个坑

mysql sum 函数、count 函数,以及 NULL 值条件可能踩的坑。

  • SELECT SUM(score) FROM `person` ;    null
  • SELECT COUNT(score) FROM `person`;    0
  • select id from person where score=NULL;    null

显然,这三条 SQL 语句的执行结果和我们的期望不同:

  • 虽然score 是null,但 sum 的结果应该是 0 才对;
  • 虽然 score 是 null,但记录总数应该是 1 才对;
  • 使用 score =null 并没有查询到 id=1 的记录,查询条件失效。

原因是:

  • MySQL 中 sum 函数没统计到任何记录时,会返回 null 而不是 0,可以使用 IFNULL 函数把 null 转换为 0;
  • MySQL 中 count 字段不统计 null 值,count(*) 才是统计所有记录数量的正确方式。
  • MySQL 中使用诸如 =、<、> 这样的算数比较操作符比较 NULL 的结果总是 NULL,这种比较就显得没有任何意义,需要使用 IS NULL、IS NOT NULL 或 ISNULL() 函数来比较。

修改一下 SQL:

select ifnull(sum(score) ,0) from `person` ;   

select count(*) from `person` ;   

select * from `person` where score is null; 

 

相关推荐

  1. MySQL 有关 NULL

    2024-01-13 06:00:04       49 阅读
  2. MySQLNULL值与空值

    2024-01-13 06:00:04       54 阅读
  3. MySQLNULL值问题

    2024-01-13 06:00:04       59 阅读
  4. 学习MySQL“IS NULL”优化

    2024-01-13 06:00:04       51 阅读
  5. Mysqlnull值处理

    2024-01-13 06:00:04       30 阅读
  6. MySQLNULL和空区别是什么?底层原理是什么?

    2024-01-13 06:00:04       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-13 06:00:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-13 06:00:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-13 06:00:04       87 阅读
  4. Python语言-面向对象

    2024-01-13 06:00:04       96 阅读

热门阅读

  1. c# ref和out参数修饰符

    2024-01-13 06:00:04       59 阅读
  2. 生成并压缩多个word文件,写入response

    2024-01-13 06:00:04       46 阅读
  3. jenkins设置Jenkinsfile的pipeline脚本 nohup运行

    2024-01-13 06:00:04       60 阅读
  4. 解决chromebook kabylake安装linux没有声音问题

    2024-01-13 06:00:04       60 阅读
  5. @KafkaListener指定kafka集群

    2024-01-13 06:00:04       51 阅读
  6. HTML5中form表单防止重复提交的两种方法

    2024-01-13 06:00:04       63 阅读
  7. VUE 前端框架学习总结

    2024-01-13 06:00:04       57 阅读
  8. Spring Boot 构建工具插件

    2024-01-13 06:00:04       65 阅读
  9. Web3.0是如何影响未来互联网发展的

    2024-01-13 06:00:04       59 阅读
  10. MAC通过终端,使用python3建立本地Web服务

    2024-01-13 06:00:04       54 阅读