如何实现和not in子句

82次阅读
没有评论

共计 1071 个字符,预计需要花费 3 分钟才能阅读完成。

如何实现和 not in 子句,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

 hive 实例讲解实现 in 和 not in 子句

目前 hive 不支持 in 或 not in 中包含查询子句的语法,所以只能通过 left join 实现。

假设有一个登陆表 login(当天登陆记录, 只有一个 uid), 和一个用户注册表 regusers(当天注册用户,字段只有一个 uid),这两个表都包含一个字段,uid。

in 查询

如果要查询当天登陆的注册用户,需要用 in 查询,hive sql 如下:

select login.uid from login left outer join regusers on login.uid=regusers.uid where regusers.uid is not null

如果 login 表和 regusers 表按天分区,字段是 dt,那么查询 2013 年 1 月 1 号当天登陆的注册用户,hive sql 如下:

select login.uid from login day_login left outer join (select uid from regusers where dt= 20130101) day_reguserson day_login.uid=day_regusers.uid where day_login.dt= 20130101 and day_regusers.uid is not null

not in 查询

如果要查询当天登陆的老用户 (这里假设非当天注册用户就是老用户),需要用 not in 查询,hive sql 如下:

select login.uid from login left outer join regusers on login.uid=regusers.uid where regusers.uid is null;

如果 login 表和 regusers 表按天分区,字段是 dt,那么查询 2013 年 1 月 1 号当天登陆的老用户,hive sql 如下:

select login.uid from login day_login left outer join (select uid from regusers where dt= 20130101) day_reguserson day_login.uid=day_regusers.uid where day_login.dt= 20130101 and day_regusers.uid is null;

关于如何实现和 not in 子句问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计1071字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)