如何在Hive中使用NOT IN

用户名

假设我有2个表,如下所示。现在,如果我想获得sql将使用的结果,insert into B where id not in(select id from A)它将插入3 George表B中。

如何在蜂巢中实现这一点?

表A

id  name      
1   Rahul     
2   Keshav    
3   George

表B

id  name      
1   Rahul     
2   Keshav    
4   Yogesh   
大卫·杜杜·马尔科维茨(David Dudu Markovitz)

自Hive 0.13于3年前(2014年4月21日)发布以来,一直支持带有不相关子查询的WHERE子句中的NOT IN

select * from A where id not in (select id from B where id is not null);

+----+--------+
| id |  name  |
+----+--------+
|  3 | George |
+----+--------+

在早期版本中,外部表的列应使用表名/别名限定。

hive> select * from A where id not in (select id from B where id is not null);
FAILED: SemanticException [Error 10249]: Line 1:22 Unsupported SubQuery Expression 'id': Correlating expression cannot contain unqualified column references.

hive> select * from A where A.id not in (select id from B where id is not null);
OK
3   George

ps
当使用NOT IN时,应该添加is not null到内部查询中,除非您100%确保相关列不包含空值。
一个空值足以使您的查询不返回任何结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Hive中使用递归查询

如何在 Hive SQL 中使用查询结果作为变量

如何在Hive查询中使用collect_set

如何在两列中使用Hive sql的lag函数?

如何在Flutter中使用Hive进行库存清单?

如何在Impala / Hive中使用MINUS运算符?

如何在Hive中使用NaN值过滤出行?

如何在Hive中使用子查询进行联接?

如何在 hive 中使用 array_contains

如何在Hive中使用多子查询重写SQL

如何在 Hive 中使用 2 个 for 循环

如何在 Hive 查询中使用 row_number 来获取最新的用户登录信息?

如何在Hive中使用regexp_replace()一次删除多个字符?

如何在Hive / Spark SQL中使用窗口函数删除重叠

如何在HIVE的CASE语句中使用SET列表变量

如何在 hive 插入分区语句中使用 UDF 值或列值,而不是常量值

如何在其他查询的变量中使用Hive查询结果(多个)

如何在Hive中使用日期基于星期动态分区表

Hive-如何在ON语句中使用OR子句联接表

如何在Hive SQL中使用group by将数据转换为地图?

如何在Hive中使用其他表中的特定列值创建表

如何在Pig或Hive中使用array_agg()聚合函数

如何在 hive udf 中使用 collect_set 的结果 - 评估方法?

如何在Hive SQL中使用千位分隔符格式化int数字输出

如何在xpath中使用“ not”?

如何在then()中使用$ .ajax?

如何在TypeScript中使用“ then”?

如何在<=中使用whereIn?

如何在Haskell中使用(。)