gpt4 book ai didi

hadoop - 如何在 Hive 中使用 NOT IN

转载 作者:可可西里 更新时间:2023-11-01 14:16:13 25 4
gpt4 key购买 nike

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

如何在 hive 中实现这个?

表A

id  name      
1 Rahul
2 Keshav
3 George

表B

id  name      
1 Rahul
2 Keshav
4 Yogesh

最佳答案

NOT IN 在具有不相关子查询的 WHERE 子句中是 supported since Hive 0.13 3 年多以前,即 2014 年 4 月 21 日发布。

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

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

关于hadoop - 如何在 Hive 中使用 NOT IN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44714625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com