mysql - 计数不正确

标签 mysql

我有一个表格来计算一个用户的评论和喜欢:

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/

相关文章:

mysql - 给出不同结果的两个 MySQL 查询

sql - "select where not exists"查询中的语法错误

php - 如何将MySQL列数据中的换行符转换为\n?

php - Jquery Ajax 将 tinyMCE html 发送到 php 页面

.net - 使用 F# 在 MySql 数据库中存储数据结构

python - 如何将 python 字典 pickle 到 MySQL 中?

mysql - 选择查询来求和表 1 中的平均字段并计算表中的字段

mysql - 我的 MySQL 脚本语法错误

sql - SQL 中的重新映射/连接

mysql - innodb 中的锁定傻瓜指南