目前hive不支援 in或not in 中包含查詢子句的語法,所以只能通過left join實現。
假設有乙個登陸表login(當天登陸記錄,只有乙個uid),和乙個使用者登錄檔regusers(當天註冊使用者,字段只有乙個uid),這兩個表都包含乙個字段,uid。
如果要查詢當天登陸的註冊使用者,需要用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,那麼查詢2023年1月1號當天登陸的註冊使用者,hive sql如下:
select login.uid from login day_login left outer join(select uid from regusers where dt='20130101') day_regusers
on day_login.uid=day_regusers.uid where day_login.dt='20130101' and day_regusers.uid is not null
如果要查詢當天登陸的老使用者(這裡假設非當天註冊使用者就是老使用者),需要用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,那麼查詢2023年1月1號當天登陸的老使用者,hive sql如下:
select login.uid from login day_login left outer join(select uid from regusers where dt='20130101') day_regusers
on day_login.uid=day_regusers.uid where day_login.dt='20130101' and day_regusers.uid is null;
hive例項講解實現in和not in子句
目前hive不支援 in或not in 中包含查詢子句的語法,所以只能通過left join實現。假設有乙個登陸表login 當天登陸記錄,只有乙個uid 和乙個使用者登錄檔regusers 當天註冊使用者,字段只有乙個uid 這兩個表都包含乙個字段,uid。如果要查詢當天登陸的註冊使用者,需要用i...
hive例項講解實現in和not in子句
目前hive不支援 in或not in 中包含查詢子句的語法,所以只能通過left join實現。假設有乙個登陸表login 當天登陸記錄,只有乙個uid 和乙個使用者登錄檔regusers 當天註冊使用者,字段只有乙個uid 這兩個表都包含乙個字段,uid。如果要查詢當天登陸的註冊使用者,需要用i...
hive例項講解實現in和not in子句
目前hive不支援 in或not in 中包含查詢子句的語法,所以只能通過left join實現。假設有乙個登陸表login 當天登陸記錄,只有乙個uid 和乙個使用者登錄檔regusers 當天註冊使用者,字段只有乙個uid 這兩個表都包含乙個字段,uid。如果要查詢當天登陸的註冊使用者,需要用i...