MySQL 连接帖子、用户信息和评级的三个表

标签 mysql sql join

我无法想象这里要使用什么 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/

相关文章:

MySql 使用唯一键约束递增单元格值

php - 3 表之间的 Laravel Eloquent 关系

php - Flash 使用 PHP 和 MySQL 从远程服务器获取数据

sql - 在 SQL 中使用 XML 时的 Where 子句

Android SQLite 查询、插入、更新、删除,总是需要在后台线程?

MySQL 查询连接表

与上个月相比,MySQL 月度总计

sql - 将递归函数转换为 View

MySQL - 在 "normal"连接不可能时显示/计数连接记录

mysql - INNER JOIN 不适合我