两种查询方法给出不同的结果

时间:2019-03-30 22:01:09

标签: mysql sql

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

Link to output data via github.

0 个答案:

没有答案