HiveSQL DQL joinとunion

1784 ワード

3.3 joinクエリー
複数のテーブルをフィールドで関連付け、クエリー結果を形成してstudent_を作成します.locationテーブル、学生の地理的位置情報を格納する
CREATE TABLE student_location( id string comment 'stdno',
province string comment 'province name', city string comment 'city name',
region string comment 'region name'
)
comment 'student location info' ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t' LINES TERMINATED BY '
'

構築student_locationテーブルデータ
001	   	    	   

student_へのデータのロードlocationテーブル
LOAD DATA LOCAL INPATH './student_location.txt' OVERWRITE INTO TABLE student_location;

joinクエリー例inner join左テーブルと右テーブルが結合条件を満たすデータをすべてクエリー
select * from  student 
inner join student_location
on student.id=student_location.id;

left outer joinは左の表を主とし、左の表のデータをすべて保持し、関連付けられていない上のデータフィールドをNULLに設定する
select * from student 
left outer join student_location
on student.id=student_location.id;

right outer joinは右の表を主とし、右の表のデータをすべて保持し、関連付けられていない上のデータフィールドをNULLに設定する
select * from student
right outer join student_location 
on student.id=student_location.id;

full outer join関連付けられていないデータフィールドはすべてNULLに設定
select * from student
full outer join student_location 
on student.id=student_location.id;

3.4union
union allはすべてのテーブルデータを完全に重ねて、重くしません.要件:すべてのテーブルのフィールドとタイプが完全に一致しています.studentとstudent_でouterテーブルを例に
select * from student 
union all
select * from student_outer;

Unionはすべてのテーブルデータを完全に重ねて、全体的に重くします.要件:すべてのテーブルのフィールドとタイプが完全に一致しています.studentとstudent_でouterテーブルを例に
select * from student 
union
select * from student_outer;