共计 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 行业资讯频道了解更多相关知识。