我在 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/