sqlite中ALL运算符的最大值

时间:2016-01-30 15:08:12

标签: sql sqlite max

有两个表:

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);

我收到错误:

  

错误:接近"所有":语法错误

我无法理解我在这里做错了什么。

1 个答案:

答案 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;