在 hive 中使用多个 or 和 and 条件时出错
Posted
技术标签:
【中文标题】在 hive 中使用多个 or 和 and 条件时出错【英文标题】:error whlite using multiple or & and conditions in hive 【发布时间】:2020-01-13 08:46:08 【问题描述】:嗨,我有一张如下表 temp_layer_table:-
id count name
1 0 v
2 3 r
1 5 t
4 0 f
4 6 g
2 0 r
3 6 r
3 0 g
5 0 t
现在我需要写一个条件,如果 id 是 1 或 4 或 3,并且所有 3 个 id 的 count = 0,那么我应该消除这些记录
id count name
2 3 r
1 5 t
4 6 g
2 0 r
3 6 r
5 0 t
我尝试过以下配置单元查询但不起作用
代码 1:-
insert into table final_layer_table
select n.*
from temp_layer_table n
where id = '1'
or id = '4'
or id = '3'
and count != '0' ;
code2:-
insert into table final_layer_table
select n.*
from temp_layer_table n
where id in ('1','4','3')
and count != '0' ;
【问题讨论】:
AND
的优先级高于 OR
。 IE。 where id = '1' or id = '4' or id = '3' and count != '0'
表示 where id = '1' or id = '4' or (id = '3' and count != '0')
... ***.com/questions/1241142/…
鉴于这两个查询都会导致语法错误,我不太确定你在追求什么。
【参考方案1】:
如果 id 是 1 或 4 或 3 并且所有 3 个 id 的 count = 0,那么我应该消除这些记录
我会用not
条件来表达这个:
where not (id in (1, 3, 4) and count = 0)
【讨论】:
【参考方案2】:您需要以下任一行:
id 不是 1、3、4;或 计数 0.那就是:
where id not iN (1, 3, 4) or
count <> 0
【讨论】:
以上是关于在 hive 中使用多个 or 和 and 条件时出错的主要内容,如果未能解决你的问题,请参考以下文章
在 AND 内具有多个 OR 条件的 SQL 查询返回 null 或空