我有一个表格来计算一个用户的评论和喜欢:
http://sqlfiddle.com/#!9/5cda66/1
有 3 个赞和 6 个评论。但它显示了 3 个赞和 18 个评论。它总是在成倍增加。 3 x 6 = 18,这是错误的。
如何解决?
select
count(DISTINCT likes.user) as likes_count,
SUM(CASE comentarios.delete WHEN 0 THEN 1 ELSE 0 END) as comentarios_count
from posts p
left join likes on likes.post = p.id
left join comentarios on comentarios.foto = p.id
group by p.id
最佳答案
如果将条件放在 left join
子句中,您还可以在注释中使用 count(distinct)
select count(distinct l.user) as likes_count,
count(distinct c.id) as comentarios_count
from posts p
left join likes l on l.post = p.id
left join comentarios c on c.foto = p.id
and c.delete = 0
group by p.id
SQLFiddle demo
关于mysql - 计数不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48117388/