如何添加两个SUM

时间:2011-07-13 20:05:58

标签: mysql sql

为什么不进行以下工作?

SELECT SUM(startUserThreads.newForStartUser)+SUM(endUserThreads.newForEndUser) AS numNew ...

返回一个空字符串。

以下是为我的数据集返回1:

SELECT SUM(startUserThreads.newForStartUser) AS numNew ...

如何正确添加两个总和?

整件事:

SELECT t.*,
       COUNT(startUserThreads.id) + COUNT(endUserThreads.id)                     AS numThreads,
       SUM(startUserThreads.newForStartUser) + SUM(endUserThreads.newForEndUser) AS numNew
FROM   `folder` `t`
       LEFT OUTER JOIN `thread` `startUserThreads`
         ON ( `startUserThreads`.`startUserFolder_id` = `t`.`id` )
       LEFT OUTER JOIN `thread` `endUserThreads`
         ON ( `endUserThreads`.`endUserFolder_id` = `t`.`id` )
WHERE  user_id = :user

仅供参考,只有两个用户可以在我的模型中共享一个帖子。这应该解释我的专栏名称

2 个答案:

答案 0 :(得分:7)

SELECT COALESCE(SUM(startUserThreads.newForStartUser),0)+COALESCE(SUM(endUserThreads.newForEndUser),0) AS numNew ...

答案 1 :(得分:1)

来自MySQL文档

  

SUM([DISTINCT] expr)

     

返回expr的总和。如果返回集没有行,则SUM()返回   空值。 DISTINCT关键字可以在MySQL 5.0中使用,只对它求和   不同的expr值。

     

如果没有匹配的行,则SUM()返回NULL。

     

聚合(摘要)函数,例如COUNT(),MIN()和SUM()忽略   NULL值。例外情况是COUNT(*),它计算行和   不是单个列值。

也许尝试COALESCE(SUM(x),0)+ COALESCE(SUM(y),0)?