1

このステートメントで私がしようとしているのは、1999 年、2000 年、2001 年に公開された 3 時間以上の映画をすべて表示することです (実際の列は秒単位です)。

出力テーブルは正しい年を示していますが、映画以外の title_type の他のものを示しており、title_runtime_hrs で 3 未満 (および 3 より大きい) の時間を示しています。

これは私のコードです:

select title_name, title_type, title_release_year, 
    (title_runtime / 3600.0) as title_runtime_hrs
from nf_titles
where title_type = 'Movie' and
    title_runtime > 3 and
    title_release_year = '1999' or
    title_release_year = '2000' or
    title_release_year = '2001' 
order by title_release_year, title_runtime_hrs desc
4

3 に答える 3

3

ORステートメントを括弧で囲む必要があります。それ以外の場合、SQL Server は「わかりました。これは 2000 年です。基準を満たしました。

select title_name, title_type, title_release_year, (title_runtime / 3600.0) as title_runtime_hrs
from nf_titles
where title_type = 'Movie' and
    title_runtime > 3 and
    (title_release_year = '1999' or
    title_release_year = '2000' or
    title_release_year = '2001' )
order by title_release_year, title_runtime_hrs desc
于 2013-10-11T14:07:52.357 に答える
2

おそらく、ORステートメントを括弧で囲む必要があります (これは、ANDバインドが よりも強いためですOR):

select title_name, title_type, title_release_year, (title_runtime / 3600.0) as title_runtime_hrs
from nf_titles
where title_type = 'Movie' and
    title_runtime > 3 and
    (
        title_release_year = '1999' or
        title_release_year = '2000' or
        title_release_year = '2001' 
    )
order by title_release_year, title_runtime_hrs desc
于 2013-10-11T14:08:02.850 に答える