MySQL:有点复杂的查询返回错误的计数结果

标签 mysql

有这三个表:

posts
posts_replies
likes

此查询返回的数据几乎没问题,但出于某种原因,帖子的回复数不准确。

SELECT posts.title, posts.num, posts.status, posts.category, posts.content, posts.member_num, COUNT( posts_replies.post_num ) AS count, COUNT( likes.comment_num ) AS likes_count
FROM posts_replies
INNER JOIN posts ON ( posts_replies.post_num = posts.num )
LEFT JOIN likes ON ( likes.comment_num = posts_replies.num )
WHERE posts.status =1
AND posts.access = 'Public'
GROUP BY posts.num
ORDER BY count DESC
LIMIT 50

这是我使用的计数:COUNT( posts_replies.post_num ) AS 计数

对此有什么建议吗?

谢谢

最佳答案

您的查询将针对链接到该回复的每个喜欢对每个回复计数一次。

为了只计算每个回复一次,替换

COUNT( posts_replies.post_num ) AS count

COUNT(DISTINCT posts_replies.num ) AS count

关于MySQL:有点复杂的查询返回错误的计数结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15185477/

相关文章:

mysql - 单个查询中的多项选择,但有多个不同的字段名称

MySQL:使用 DATE FORMAT %d-%m-%y TO %y-%m-%d 更新表值

Php 迭代数组并更新 mysql 的最快方法?

mysql - 更新多行 VS 单行 + 更频繁

java - MySQL JDBC 问题

python - 如何在 SQLAlchemy 中创建 ENUM?

php - Kohana ORM - 我该怎么做?

mysql - Golang : cannot use sql. 准备好的语句中的 NamedArg

MySQL - SELECT + JOIN + ORDER BY 性能

MySQLNonTransientConnectionException : Communications link failure during commit with mysql and mongodb in grails-2. 2.2