关于hive中not in不支持子查询的解决方法

表信息:

用户User表(userid,name)

关于hive中not in不支持子查询的解决方法_第1张图片                                   

黑名单BanUser表(userid,name)

问题:

找出不在黑名单中的用户信息(userid,name)

hive暂时不支持以下查询方式:

select aa.* from user aa where aa.user not in (select a.userid from banuser a);

 

方法一:使用not exists进行改写

select aa.* from user aa

  where not exists (select a.userid from banuser a where a.userid=aa.userid);

关于hive中not in不支持子查询的解决方法_第2张图片

方法二:使用left join进行改写

select a.userid,a.name

from user a left join banuser b on a.userid=b.userid

where b.userid is null; 

关于hive中not in不支持子查询的解决方法_第3张图片

你可能感兴趣的:(hive)