【发布时间】:2020-10-07 05:12:03
【问题描述】:
抱歉这个菜鸟问题,这里是 SQL 新手,希望得到帮助:)
我有这个 SQL 查询:
select * from nobel_win
where (subject = 'Physiology' and year < 1971)
and (subject = 'Peace' and year => 1974)
如果我使用这个查询,我会得到相同的结果吗? (我在这里正确应用了 case 函数吗?)如果没有,如果可能的话,有人可以帮我解决下面的查询吗?
select *
(case when subject = 'Physiology' and year < 1971 end),
(case when subject = 'Peace' and year => 1974 end),
from nobel_win
*编辑
原来的查询实际上是这样的,我尝试通过 WHERE 来缩短 UNION(参考第一个代码块)。有人可以更正我的第一个代码块,以便它显示相同的输出吗?非常感谢:(
(select * from nobel_win
where subject = 'Physiology' and year < 1971)
UNION
(select * from nobel_win
where subject = 'Peace' and year => 1974)
【问题讨论】:
-
不,第一个查询将不返回任何结果,第二个查询将不会运行,因为它有语法错误。
-
如果你自己尝试一下,你会很快找到答案No,即使第二个没有语法错误,第二个的结果集也比第一个大
-
没有。排除数据的过滤器在哪里。 Case when 是解码某些东西,但它将获取所有数据而没有任何排除。所以qn是你想要的吗?过滤后的数据或所有带有解码逻辑的数据。
标签: sql case where-clause