我是 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/