Movie(mID int, title text, year int, director text);
Rating(rID int, mID int, stars int, ratingDate date);
我想用ALL操作员进行查询,获取电影的标题和这部电影收到的最大明星。
SELECT Title, Stars
FROM Movie m, Rating rt
WHERE m.mID=rt.mID AND stars>=all(SELECT stars FROM rating rt, movie m WHERE m.mid=rt.mid);
错误:接近"所有":语法错误
我无法理解我在这里做错了什么。
答案 0 :(得分:0)
SQLite中没有ALL运算符。
您的查询,如果有效,将只返回那些拥有最多明星的电影。 这可以通过MAX()实现:
SELECT Movie.title,
Rating.stars
FROM Movie
JOIN Rating USING (mID)
WHERE Rating.stars >= (SELECT MAX(stars)
FROM Rating);
如果您想要每部电影的最多星数,请使用分组:
SELECT Movie.title,
MAX(Rating.stars) AS stars
FROM Movie
LEFT JOIN Rating USING (mID)
GROUP BY mID;
(outer join也会返回没有评分的电影。)
使用标量子查询也可以实现相同的目的:
SELECT title,
(SELECT MAX(stars)
FROM Rating
WHERE mID = Movie.mID
) AS stars
FROM Movie;