php - 左连接中的总和计数错误

标签 php mysql

我在左连接中得到的查询总和计数错误。

这是两个单独的查询,它们分别给出正确的结果。

SELECT wallpaper_id FROM `contest_participants` WHERE contest_id=2

SELECT wallpaper_id, SUM(upvotes) FROM `contest_wallpaper_upvote` WHERE contest_id=2 GROUP BY wallpaper_id

我使用 join 来总结赞成票,如下

Select distinct p.wallpaper_id, sum(u.upvotes) from contest_participants p
Left join contest_wallpaper_upvote as u
On p.wallpaper_id = u.wallpaper_id
Where p.contest_id = 2  group by p.wallpaper_id

问题是,如果upvote 表中没有wallpaper_id 条目,则会给出错误的总和计数。

有人可以帮我解决这个查询吗?

谢谢

最佳答案

您可以像下面这样检查。如果u.wallpaper_id为空,那么您可以添加0,否则u.upvotes

Select distinct p.wallpaper_id, sum(if(u.wallpaper_id is null, 0, u.upvotes)) as upvotes from contest_participants p
Left join contest_wallpaper_upvote as u
On p.wallpaper_id = u.wallpaper_id AND u.contest_id = 2
Where p.contest_id = 2  group by p.wallpaper_id

关于php - 左连接中的总和计数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55432117/

相关文章:

mysql - 使用Scala和spark从mysql中提取数据

php - 数据库数据不显示在网页上

php - 是否可以在分层无序列表中显示平面数据库表?

javascript - 在 Document.ready 函数上更新 Ajax

javascript - 带有 javascript 和 php 的动态表单字段 : It doesn't work

php - 计算具有一个值的行数和具有另一值的行数,并输出表中出现的最低值

mysql - 存储在 Magento 数据库中的优惠券代码

php - Codeigniter 包含在 View 中

PHP SoapClient 版本不匹配

php - 在 MySQL 数据库中插入一个数组