如果没有找到记录,则返回总和0 mysql
问题描述:
如果users
表中的记录不存在于securitydeposits
表中,我希望此查询返回0的总和为total
。 COALESCE
不适用于这种情况。我将如何去做这件事?如果没有找到记录,则返回总和0 mysql
SELECT users.`email`,
COALESCE(SUM(securitydeposits.`amount_paid`),0) AS total
FROM `users`
LEFT JOIN `securitydeposits`
ON securitydeposits.user=users.email
GROUP BY securitydeposits.`user`
ORDER BY `total` DESC
答
我猜你GROUP BY
正在改变OUTER JOIN
到INNER JOIN
。
尝试改变GROUP BY securitydeposits.user
到GROUP BY users.email
答
我想补充什么@Vatev说,你不能使用s.user
为group by
,因为left join
会给你null
为s.user
不与u.email
匹配。 另外如果你想在select子句中使用email
,你还需要group by
它也能得到正确的结果。
也尝试使用alias
作为最佳实践,因此您可以在查询的其余部分引用它们。
SELECT u.email
,COALESCE(SUM(s.`amount_paid`),0)
AS total
FROM `users` u
LEFT JOIN `securitydeposits` s
ON s.user=u.email
GROUP BY u.email
ORDER BY `total` DESC