共計 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 行業資訊頻道了解更多相關知識。