在if-else中阻止语句

时间:2013-05-29 07:19:40

标签: hadoop hive hiveql

Hive支持条件语句 - https://cwiki.apache.org/Hive/languagemanual-udf.html#LanguageManualUDF-ConditionalFunctions

但是,我希望使用条件语句。例如,我有两个表A和B具有相似的列(尽管列名不相同)。我希望从A和B创建一个新表,使B具有更高的优先级。因此,如果B中存在一行,我希望从B中选择它,否则从A中选择行。 即。

SELECT 
IF (B.id<>NULL,
      (B.id as id,
       B.value1 as value),
      (A.id as id,
       a.value2 as value))
FROM A FULL OUTER JOIN B ON (A.id = B.id)

以上查询不起作用。是因为Hive不支持块条件语句吗?如何实现上述功能?

1 个答案:

答案 0 :(得分:4)

我不知道块条件语句,但这不会达到同样的效果:

select case when b.id is null then a.id else b.id end as id,
       case when b.id is null then a.value else b.value end as value
from a
full outer join b on ( a.id = b.id )