我对MySQL有两天了。在制作电影数据库时,我决定尝试回答一个特定的问题:1000个列表中的哪些电影获利不佳,但IMDB得分在8到9之间?
理想情况下,我只想返回符合该条件的电影列表,但是起初,我不知道WHERE
语句。所以我使用了CASE
,所以我可以简单地用'Quality Anomaly'
标记这些电影。
然后,当我了解WHERE
时,便实现了它。但是,结果不同。使用CASE
的查询仅标记了6部电影,而使用WHERE
的查询返回了51部电影(行)。我添加了适当的列,以便可以检查以确保它是正确的,并且都已检出,但是有些奇怪的地方。当我对SELECT *
进行查询时,要返回所有电影,在使用WHERE
进行的查询的51列表中,有1000的完整列表中有很多缺失。
这是代码:
/ ** 该查询应返回所有电影标题,同时指示 电影获利,如果获利是,则为“质量异常” 当imdb分数在8到9之间时为负。它仅指示 6部电影的“质量异常”。 ** /
select
movie_title,
imdb_score,
case
when (gross < budget) and (imdb_score between 8 and 9) then 'Quality Anomaly'
else gross - budget
end as profit
from movies;
/ **
下一个查询应该只列出符合条件的电影
上述'Quality Anomaly'
条件,但是
仅返回6部电影的结果,则返回51。
** /
select
movie_title,
(gross - budget) as profit,
imdb_score
from movies
where (gross < budget) and (imdb_score between 8 and 9);