许多AND条件的替代品

时间:2016-08-19 12:33:35

标签: sql hive hiveql

我正在处理有条件的hive查询。前

select id, name from students
where id not in (1,2,3,4,5,6,7,8,9,10);

Hive不支持

select id, name from students
where (id <> 1 OR id <> 2 OR id <> 3 OR id <> 4 OR id <> 5 
OR id <> 6 OR id <> 7 OR id <> 8 OR id <> 9 OR id <> 10);

我是否采取了正确的方法,如果没有。请建议我替代方案。

2 个答案:

答案 0 :(得分:2)

根据documentation,Hive 支持NOT IN

  

A NOT IN(val1,val2,...)布尔值如果A不等于任何一个,则为TRUE   价值。从Hive开始,NOT IN中支持0.13子查询   语句。

您可能会将NOT IN与子查询混淆,但这不是查询的结构。

另外,你可以随时做:

WHERE NOT (id in (1,2,3,4,5,6,7,8,9,10) )

而且,您的查询问题是or应为and s。

答案 1 :(得分:1)

请参阅https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

的逻辑运算符部分

现在支持NOT IN查询。

  

A NOT IN(val1,val2,...)|布尔|如果A不等于任何值,则为TRUE。从Hive开始,在NOT IN语句中支持0.13子查询。