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

作者:IT范儿 时间:2024-01-17 03:20:04 

介绍

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 :

Mysql使用sum()函数返回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

参考

  • How do I get SUM function in MySQL to return ‘0’ if no values are found? - Stack Overflow

  • sql - What is the difference bewteen ifnull and coalesce in mysql? - Stack Overflow

来源:http://www.itfanr.cc/2022/01/28/mysql-sum-function-return-null/

标签:mysql,sum(),null
0
投稿

猜你喜欢

  • pygame实现雷电游戏雏形开发

    2021-04-14 13:52:31
  • Python文本文件的合并操作方法代码实例

    2022-12-07 21:52:54
  • 常用原生js自定义函数总结

    2024-04-16 09:05:57
  • mysql 索引详细介绍

    2024-01-17 22:35:52
  • Python和Excel的完美结合的常用操作案例汇总

    2021-12-30 05:15:37
  • Python转json时出现中文乱码的问题及解决

    2021-11-29 17:02:16
  • mssql 指定字段编号sql语句

    2024-01-21 18:58:53
  • 了解不常见但是实用的Python技巧

    2022-10-12 09:07:35
  • JS实现文字放大效果的方法

    2024-04-25 13:09:52
  • Django缓存系统实现过程解析

    2021-07-22 23:18:09
  • SpringBoot 中使用JSP的方法示例

    2023-06-16 22:35:09
  • Linux(Ubuntu)下mysql5.7.17安装配置方法图文教程

    2024-01-25 21:28:32
  • 关于TypeScript模块导入的那些事

    2024-06-07 15:57:46
  • 基于Django实现日志记录报错信息

    2021-06-22 06:24:23
  • 解决MySQL8.0安装第一次登陆修改密码时出现的问题

    2024-01-21 16:19:49
  • python utc datetime转换为时间戳的方法

    2021-11-18 07:11:44
  • Python NumPy实现数组排序与过滤示例分析讲解

    2021-07-20 08:33:20
  • Python实现GPU加速的基本操作

    2021-07-30 05:10:34
  • TensorBoard 计算图的可视化实现

    2021-12-06 19:39:58
  • python中的import、from import及import as的区别解析

    2022-10-07 15:56:09
  • asp之家 网络编程 m.aspxhome.com