我正在尝试使用该声明显示1999年,2000年和2001年发布的超过三小时的所有电影(实际列以秒为单位)。
输出表显示正确的年份,但它显示除了movie之外的title_type的其他内容,并且它在title_runtime_hrs中显示少于三(以及大于三)的时间。
这是我的代码:
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
答案 0 :(得分:5)
或者这样做
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 in ('1999','2000','2001')
order by title_release_year, title_runtime_hrs desc
答案 1 :(得分: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
答案 2 :(得分: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