欢迎来到代码驿站!

Mysql

当前位置:首页 > 数据库 > Mysql

Mysql使用sum()函数返回null的问题详解

时间:2022-09-16 10:16:53|栏目:Mysql|点击:

介绍

SUM()函数用于计算一组值或表达式的总和,SUM()函数的语法如下:

SUM(DISTINCT expression)

SUM()函数是如何工作的?

  • 如果在没有返回匹配行SELECT语句中使用SUM函数,则SUM函数返回NULL,而不是0。
  • DISTINCT运算符允许计算集合中的不同值。
  • SUM函数忽略计算中的NULL值。

问题

在项目中使用 Mysql 中的 sum() 函数求和时,调试时发现报出下面的错误信息:

sql: Scan error on column index 0, name "total": converting NULL to int64 is unsupported

我相应执行的sql语句如下:

SELECT SUM(consume) as total FROM task_income WHERE consume_type=3 AND uid=20;

验证

为了找到原因,我在 Navicat 中执行了一遍出问题的sql和参数,发现结果中确实是返回了 null :

按我之前开发时的想法:

  • 如果有相应的数据,返回求和后的值
  • 如果没有符合条件的数据,返回 0

结果,当没有符合条件的数据时却返回了 null 。

解决

可以通过结合使用 ISNULL 或 COALESCE 函数来解决。

相应的示例如下:

SELECT IFNULL(SUM(Column1), 0) AS total FROM...

SELECT COALESCE(SUM(Column1), 0) AS total FROM...

区别

上面说道,使用 ISNULL 或 COALESCE 函数都可以解决为 null 的问题,那么这两个函数有什么区别呢?

  • ISNULL 函数接受两个参数,如果第一个参数不是 null 会直接返回,如果第一个参数是 null ,则返回第二个参数
  • COALESCE 函数可以接受两个或多个参数,并返回第一个非 null 的参数,如果所有参数都为 null,则会返回 null

参考

总结

上一篇:Mac操作系统下MySQL密码忘记后重置密码的方法

栏    目:Mysql

下一篇:Mysql带And关键字的多条件查询语句

本文标题:Mysql使用sum()函数返回null的问题详解

本文地址:http://www.codeinn.net/misctech/213852.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有