mysql - SQL将空值之和转换为0

标签 mysql sql null sum

我在 SQL 中有一个查询,它对值求和并将它们作为月份添加到某个日期。

    SELECT
    FROM_UNIXTIME(S.created) as start_date, 
   (FROM_UNIXTIME(S.created) + INTERVAL (C.items_left + C.items_given) MONTH)
    AS end_date,
    FROM table1 S
    LEFT JOIN table2 C ON C.id = S.id;

当要求和的这些值中有一些为空而不是 0 并且我无法更改数据源时,就会出现问题。

(FROM_UNIXTIME(S.created) + INTERVAL (C.items_left + C.items_given) MONTH)
AS end_date,

正在生成空值,因为 (C.items_left + C.items_given) 为空值。

那么,问题是,我如何执行这个总和,使结果为 0 而不是 null?

最佳答案

使用合并

SELECT
    FROM_UNIXTIME(S.created) as start_date, 
   ( coalesce(FROM_UNIXTIME(S.created),0) + INTERVAL coalesce((coalesce(C.items_left,0) + coalesce(C.items_given,0)),0) MONTH)
    AS end_date,
    FROM table1 S
    LEFT JOIN table2 C ON C.id = S.id;

关于mysql - SQL将空值之和转换为0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54827102/

相关文章:

显示表中最后一行值的 PHP 数组

sql - 自定义日期时间格式 - SQL 服务器

mysql - 从结果集中删除 NULL

ruby-on-rails - RoR/Ruby 从嵌套数组中删除 nil 元素

PHP LaravelMerge 数据到单个数组

php - MYSQL - 查询匹配日期的项目

php - 使用 select 获取变量

mysql - 如何使用 mysql 工作台类型 double 在 csv 文件中导入空?

PHP/mySQL---选择存在另一个值的最大值

sql - 有效地(在性能方面)在 MySQL 中存储和使用设置值