mysql - 如何从数据库中选择评分最高的前 10 部电影?

标签 mysql rdbms

我是 MySQL 的新手,很难运行复杂的查询。 我有两张 table

电影表

CREATE TABLE movies (movieid int(4) NOT NULL PRIMARY KEY, 
title varchar(255) NOT NULL, 
genres varchar(255) NOT NULL);

评分表

CREATE TABLE ratings (userid int(4) NOT NULL, movieid int(4) NOT NULL,
rating int(1) NOT NULL, timestamp int(10) NOT NULL ADD CONSTRAINT FK_ratings 
FOREIGN KEY(movieid) REFERENCES movies(movieid));

我想获得评分最高的 10 部电影; 这是我对查询的了解:

SELECT title 
FROM movie m
JOIN (
SELECT movieid, COUNT(movieid) 
FROM ratings) 
ON m.movieid = r.movieid
LIMIT BY 10

我一直只收到 1 作为响应。

最佳答案

问题是由 COUNT(movieid) 引起的。它基本上计算所有行。使连接的评级表侧只有 1 行。您想要的是通过 movieid GROUP BY 它,以便您获得每个 movieid 的单独评级计数。

试试这个:

SELECT title 
FROM movie m
JOIN (
SELECT movieid, COUNT(movieid) 
FROM ratings GROUP BY movieid) 
ON m.movieid = r.movieid
LIMIT 10

关于mysql - 如何从数据库中选择评分最高的前 10 部电影?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39599809/

相关文章:

mysql - 如何获取mysql中列中所有使用的值?

database - PostgreSQL 时间戳字段中的数据损坏

database - 如何将现有的关系数据库转换为键值存储?

java - hibernate :标识符

mysql - 如何计算行数,而不是计算每行

mysql - 抑制 mysql 提示符中的信息

mysql - 删除一个表中有语法错误的相同数据(mysql)

php - MySQL INNER 加入 RIGHT 加入和多条件 WHERE 子句与 FULL TEXT

MySQL 分解 Group By 结果以向分组添加更多详细信息

mysql - Unicode CSV 文件中未显示孟加拉语文本