hive例項講解實現in和not in子句

2021-07-10 00:17:17 字數 1322 閱讀 6140

目前hive不支援 in或not in 中包含查詢子句的語法,所以只能通過left join實現。

假設有乙個會員表tb_member(當天會員記錄,只有乙個memberid),和乙個會員消費表tb_sales

(當天會員消費,欄位有乙個memberid),這兩個表都包含乙個字段,memberid。

in查詢

如果要查詢當天會員的會員消費,需要用in查詢,hive sql如下:

select memberid.memberid from memberid l

eft outer join tb_sales on memberid.memberid=tb_sales.memberid

where tb_sales.memberid is not null

如果memberid表和tb_sales表按天分割槽,欄位是dt,那麼查詢2023年1月1號當天會員的會員消費,hive sql如下:

select memberid.memberid from memberid day_memberid left outer join

(select memberid from tb_sales where dt='20130101') day_tb_sales

on day_memberid.memberid=day_tb_sales.memberid where day_memberid.dt='20130101' and day_tb_sales.memberid is not null

not in查詢

如果要查詢當天會員的以前會員消費(這裡假設非當天會員消費就是老使用者),需要用not in查詢,hive sql如下:

select memberid.memberid from memberid

left outer join tb_sales on memberid.memberid=tb_sales.memberid

where tb_sales.memberid is null;

如果memberid表和tb_sales表按天分割槽,欄位是dt,那麼查詢2023年1月1號當天會員的以前會員消費,hive sql如下:

select memberid.memberid from memberid day_memberid left outer join

(select memberid from tb_sales where dt='20130101') day_tb_sales

on day_memberid.memberid=day_tb_sales.memberid where day_memberid.dt='20130101' and day_tb_sales.memberid 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...