本章主要講解JOIN的用法。演示數據如下:表一T_Student學生信息表,表二T_Score學生成績表。
T_Student學生信息表
T_Score學生成績表
前面都是寫的單個表的查詢,下面介紹多個表的查詢。在正常的業務邏輯中,數據都是按業務類型存放在不同表内,所以在實際的業務中我們會進程用到多表關聯查詢。有AB兩張表,顯示紅色區域的數據。現在我們設定A表為T_StuNumber、B表為T_Score。
舉例1:顯示紅色區域的數據。以C_StuNumber字段為比較字段。有兩種寫法,結果都是一樣的。
求AB表的共有部分
關聯條件
SELECT T_Student.C_StuNumber , T_Student.C_Name ,
T_Score.I_Art , T_Score.I_Math ,
T_Score.I_English , T_Score.I_Art
FROM T_Student , T_Score
WHERE T_Student.C_StuNumber = T_Score.C_StuNumber
或者這樣寫:
SELECT T_Student.C_StuNumber , T_Student.C_Name ,
T_Score.I_Art , T_Score.I_Math ,
T_Score.I_English , T_Score.I_Art
FROM T_Student INNER JOIN T_Score
ON T_Student.C_StuNumber= T_Score.C_StuNumber
例1-寫法1
例1-寫法2
舉例2:顯示紅色區域的數據。查詢T_Student表中所有學生的成績,如果沒有成績的則缺省為NULL。需要使用JION
SELECT T_Student.C_StuNumber , T_Student.C_Name ,
T_Score.I_Art , T_Score.I_Math ,
T_Score.I_English , T_Score.I_Art
FROM T_Student LEFT JOIN T_Score
ON T_Student.C_StuNumber= T_Score.C_StuNumber
例2結果
舉例3:顯示紅色區域的數據。以T_Score為基礎查詢成績,沒有成績的學生不顯示。
SELECT T_Student.C_StuNumber , T_Student.C_Name ,
T_Score.I_Art , T_Score.I_Math ,
T_Score.I_English , T_Score.I_Art
FROM T_Student RIGHT JOIN T_Score
ON T_Student.C_StuNumber = T_Score.C_StuNumber
例3結果
舉例4:顯示紅色區域的數據。以T_StuNumber為基礎查詢,排除T_Score表中的學生。
SELECT T_Student.C_StuNumber , T_Student.C_Name ,
T_Score.I_Art , T_Score.I_Math ,
T_Score.I_English , T_Score.I_Art
FROM T_Student LEFT JOIN T_Score
ON T_Student.C_StuNumber = T_Score.C_StuNumber
WHERE T_Score.C_StuNumber IS NULL
例4結果
舉例5:顯示紅色區域的數據。以T_Score為基礎查詢,排除T_StuNumber表中的學生。
SELECT T_Student.C_StuNumber , T_Student.C_Name ,
T_Score.I_Art , T_Score.I_Math ,
T_Score.I_English , T_Score.I_Art
FROM T_Student RIGHT JOIN T_Score
ON T_Student.C_StuNumber = T_Score.C_StuNumber
WHERE T_Student.C_StuNumber IS NULL
例5結果
舉例6:顯示紅色區域的數據。顯示T_StuNumber和T_Score兩張表内所有的數據。
SELECT T_Student.C_StuNumber , T_Student.C_Name ,
T_Score.I_Art , T_Score.I_Math ,
T_Score.I_English , T_Score.I_Art
FROM T_Student FULL OUTER JOIN T_Score
ON T_Student.C_StuNumber = T_Score.C_StuNumber
例6結果
舉例7:顯示紅色區域的數據。顯示T_StuNumber和T_Score兩張表中不重複的數據。
SELECT T_Student.C_StuNumber , T_Student.C_Name ,
T_Score.I_Art , T_Score.I_Math ,
T_Score.I_English , T_Score.I_Art
FROM T_Student FULL OUTER JOIN T_Score
ON T_Student.C_StuNumber = T_Score.C_StuNumber
WHERE T_Student.C_StuNumber IS NULL OR T_Score.C_StuNumber IS NULL
例7結果
總結:JOIN在多表聯合查詢中經常被使用,所以請仔細區分LEFT、RIGHT、INNER和FULL OUTER的使用區别。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!