替代' Group By' &安培; '有'查询'全部'

时间:2015-01-18 18:03:19

标签: sql sqlite

架构:

Movie(mID int, title text, year int, director text);
Reviewer(rID int, name text);
Rating(rID int, mID int, stars int, ratingDate date);

我做了这个简单的查询,它返回每部电影的最大电影评级。

select title,stars from movie join rating Using(mID)
group by title
HAVING MAX(stars)

我一直试图在不使用Group By, Having and MAX的情况下进行此查询,但我似乎无法使我的查询正常工作。

这是我到目前为止所做的:

select title,stars from movie join rating r1 Using(mID)
where stars >= 
    ALL(select stars from rating r2 where r1.rID=r2.rID AND r1.mID=r2.mID)

这似乎只是让我犯了这个错误:near "all": syntax error:我正在使用SQL浏览器进行SQL Lite。

1 个答案:

答案 0 :(得分:1)

此查询:

select title, stars
from movie M1 join
     rating
     Using mID
group by title
having MAX(stars)

对于having条款,没有做任何明智的事情。它所做的就是过滤掉max(stars)不为零或NULL的行。可能不是你想要的。

我的猜测是你希望这部电影的星级评分最高。如果一部这样的电影很好:

select title, max(stars) as stars
from movie M1 join
     rating
     Using mID
group by title
order by stars desc
limit 1;