使用 Postgres 9.5。
我正在尝试获取用户提交的链接投票的总和。想想 Reddit 业力,SO 等。
它非常适合提交了 links
的用户,但是当用户没有任何 links
时,我的响应中会出现 0 行。
这是 SUM(links.votes) 或内部连接的问题吗?我对 SQL 还很陌生,所以我可能从错误的角度来看待这个问题。
我的查询如下:
SELECT
users.firstname,
users.lastname,
users.email,
users.created_on,
SUM(links.votes) AS sum
FROM users
INNER JOIN links
ON users.id = links.created_by
WHERE users.id = 50
AND links.created_by = 50
GROUP BY users.firstname, users.lastname, users.email, users.created_on
我也尝试过 COALESCE(SUM(links.votes), 0) AS sum
认为它会在“sum”列中返回 0,但这也不起作用。
这里有什么想法吗?
谢谢!
最佳答案
你需要一个左连接
:
SELECT u.firstname, u.lastname, u.email, u.created_on,
SUM(l.votes) AS sum
FROM users u LEFT JOIN
links l
ON u.id = l.created_by AND
l.created_by = 50
WHERE u.id = 50
GROUP BY u.firstname, u.lastname, u.email, u.created_on;
请注意,links
表的条件位于 ON
子句中,而不是 WHERE
子句中。
关于sql - 当列不存在时,Postgres SUM 返回 0 行。 COALESCE 和 ISNULL 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45113969/