hive 中有case when 的语法是:
case when 条件1 then 结果1
when 条件2 then 结果2
when 条件3 then 结果3
......
else 结果x end
那如果被查询的行同时符合条件1和条件3呢?结果会是出现“结果1”还是“结果3”呢?
根据测试,是符合结果1,原因是语句先“碰见” when 条件1 then 结果1
这一句。
如果语句改为:
select
case when 条件3 then 结果3
when 条件1 then 结果1
when 条件2 then 结果2
......
else 结果x end
from xxxxxxx
结果是出现“结果3”,因为语句先匹配上when 条件3 then 结果3
.
这种可以通过行的顺序阶段实现优先级的选择的方式,可以解决一些特殊场景的问题。