为什么不进行以下工作?
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
仅供参考,只有两个用户可以在我的模型中共享一个帖子。这应该解释我的专栏名称
答案 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)?