在 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 条件时出错的主要内容,如果未能解决你的问题,请参考以下文章

mysql条件查询and or使用实例及优先级介绍

在 AND 内具有多个 OR 条件的 SQL 查询返回 null 或空

mysql where语句中 or 和 and连用注意点

C ++:for循环中的多个退出条件(多个变量):AND -ed或OR -ed?

PostgreSQL AND & OR 运算符

PostgreSQL AND & OR 运算符