将 'Group By' & 'Having' 查询替换为 'ALL'
Substitute 'Group By' & 'Having' query with 'ALL'
架构:
Movie(mID int, title text, year int, director text);
Reviewer(rID int, name text);
Rating(rID int, mID int, stars int, ratingDate date);
我做了这个简单的查询,returns 每部电影的最高电影评级。
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 Lite 的数据库浏览器。
这个查询:
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;
架构:
Movie(mID int, title text, year int, director text);
Reviewer(rID int, name text);
Rating(rID int, mID int, stars int, ratingDate date);
我做了这个简单的查询,returns 每部电影的最高电影评级。
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 Lite 的数据库浏览器。
这个查询:
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;