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%确定相关列不包含空值,否则将返回内部查询。 一个空值足以导致查询不返回任何结果。
1条答案
按热度按时间bogh5gae1#
自3年多前(2014年4月21日)发布的hive 0.13以来,不支持带有不相关子查询的where子句。
在早期版本中,外部表的列应使用表名/别名限定。
附笔
在使用not in时你应该加上
is not null
除非您100%确定相关列不包含空值,否则将返回内部查询。一个空值足以导致查询不返回任何结果。