HIVE當中的關聯查詢

2021-08-20 08:26:32 字數 1562 閱讀 5468

在hive中沒有外來鍵和主鍵之分。

但是可以進行多表關聯查詢(值關聯)。只要這兩個值相等就可以作為關聯條件,其實在mysql中也是支援。

mysql中的關聯查詢

left join 左連線

right join 右連線

innerjoin  全連線、內連線

t_user

id name

1 zs

2 ls

3 ww

create  table t_user(id int,name string) row format delimited fields terminated by'\t';

t_order

id name u_id

1 p1 1

2 p2 1

3 p1 2

create  table t_order(id int,name string,u_id int) row format delimited fieldsterminated by '\t';

hive當中的關聯查詢

1、全連線

join-----兩邊的資料必需要有關聯才會顯示。

select *from t_user join t_order on t_user.id=t_order.u_id

2、左外連線

left outerjoin是來自於oracle資料庫的語法(左表就沒有關聯右表資料也會進行顯示,只是右表的字段全是null)

select *from t_user left outer join t_order on t_user.id=t_order.u_id

3、右外連線

select *from t_user right outer join t_order on t_user.id=t_order.u_id

4、半連線left semi join

已經有一張人口資訊表,需要查詢出四川、重慶、廣州三個省份的人員資訊

mysql如何實現?

select *from t_user where 省份=四川 or 省份=重慶 or 省份=廣州

另一種方式是採用in

select *from t_user where 省份 in (四川,重慶,廣州)

hive中沒有in的語法。但是有乙個left semi join【半連線】

select *from t_user left semi join t_order on t_user.id=t_order.u_id

from後面的表為顯示表,left semi join後面的表為條件表,只會顯示顯示表中的內容

執行結果是相同:

select *from t_user where id in (select u_id from t_order);

當你做多重關聯查詢的時候,是否存在乙個載入資料的順序?

順序第一張是越大越好,還是越小越好?

select *from a1 left outer join b1 on a1.id=b1.a_id left outer join c on c1.id=b.c_id

我會持續在科多大資料學習,也會持續將學到的東西分享給各位,全是乾貨喲

Hive 關聯查詢

一 表結構 1.1 醫生主表 1.2 醫生服務次數表 二 left join查詢 1.1 on後面加and條件 1.1.1 sql語句 1.1.2 查詢結果 1.1.3 執行計畫 1.2 把條件放在where後面 1.2.1 sql語句 1.2.2 查詢結果 1.2.3 執行計畫 1.3 子查詢 1...

mysql關聯查詢去重 MySQL 關聯查詢

mysql 關聯查詢 sql資料分析 1週前 mysql 關聯查詢 前面,我們介紹的都是單錶查詢 就是只從一張表中獲取資料 而實際應用的時候,我們都會同時查詢多張表,這裡,我們就介紹下,多表關聯查詢的使用。sql join 用於根據兩個或多個表中的列之間的關係,從這些表中查詢資料 前置知識 主鍵 p...

表關聯查詢

一 內連線和外連線 內連線用於返回滿足連線條件的記錄 而外連線則是內連線的擴充套件,它不僅會滿足連線條件的記錄,而且還會返回不滿足連線條件的記錄,語法如下 oracle 1.select table1.column,table2.column from table1 inner left right...