我无法想象这里要使用什么 MySQL 查询。这是表格:
users
-----
userid name
posts
-----
postid user_id message
ratings
-----
rateid user_id post_id score
我希望能够根据用户提交的所有分数的总数来选择评分最高的前 10 个帖子。
我使用的查询是这样的,但它不会列出没有评级的项目:
SELECT *,IFNULL(SUM(score),0) score
FROM posts
LEFT JOIN ratings ON postid=post_id
LEFT JOIN users ON userid=posts.user_id
ORDER BY score DESC
LIMIT 10
但我仍然希望能够列出那些没有评级的帖子。你能帮我写一下 SQL 查询吗?谢谢!
最佳答案
SELECT post_id,coalesce(score, 0) score
FROM posts
LEFT JOIN ratings ON postid=post_id
LEFT JOIN users ON userid=posts.user_id
GROUP BY post_id
ORDER BY coalesce(score, 0) DESC
LIMIT 10
关于MySQL 连接帖子、用户信息和评级的三个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19365347/