tft每日頭條

 > 科技

 > sql join怎麼理解

sql join怎麼理解

科技 更新时间:2025-02-09 08:41:22

本章主要講解JOIN的用法。演示數據如下:表一T_Student學生信息表,表二T_Score學生成績表。

sql join怎麼理解(SQL數據庫基礎系列之七)1

T_Student學生信息表

sql join怎麼理解(SQL數據庫基礎系列之七)2

T_Score學生成績表

前面都是寫的單個表的查詢,下面介紹多個表的查詢。在正常的業務邏輯中,數據都是按業務類型存放在不同表内,所以在實際的業務中我們會進程用到多表關聯查詢。有AB兩張表,顯示紅色區域的數據。現在我們設定A表為T_StuNumber、B表為T_Score。

舉例1:顯示紅色區域的數據。以C_StuNumber字段為比較字段。有兩種寫法,結果都是一樣的。

sql join怎麼理解(SQL數據庫基礎系列之七)3

求AB表的共有部分

sql join怎麼理解(SQL數據庫基礎系列之七)4

關聯條件

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

sql join怎麼理解(SQL數據庫基礎系列之七)5

例1-寫法1

sql join怎麼理解(SQL數據庫基礎系列之七)6

例1-寫法2

舉例2:顯示紅色區域的數據。查詢T_Student表中所有學生的成績,如果沒有成績的則缺省為NULL。需要使用JION

sql join怎麼理解(SQL數據庫基礎系列之七)7

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

sql join怎麼理解(SQL數據庫基礎系列之七)8

例2結果

舉例3:顯示紅色區域的數據。以T_Score為基礎查詢成績,沒有成績的學生不顯示。

sql join怎麼理解(SQL數據庫基礎系列之七)9

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

sql join怎麼理解(SQL數據庫基礎系列之七)10

例3結果

舉例4:顯示紅色區域的數據。以T_StuNumber為基礎查詢,排除T_Score表中的學生。

sql join怎麼理解(SQL數據庫基礎系列之七)11

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

sql join怎麼理解(SQL數據庫基礎系列之七)12

例4結果

舉例5:顯示紅色區域的數據。以T_Score為基礎查詢,排除T_StuNumber表中的學生。

sql join怎麼理解(SQL數據庫基礎系列之七)13

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

sql join怎麼理解(SQL數據庫基礎系列之七)14

例5結果

舉例6:顯示紅色區域的數據。顯示T_StuNumber和T_Score兩張表内所有的數據。

sql join怎麼理解(SQL數據庫基礎系列之七)15

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

sql join怎麼理解(SQL數據庫基礎系列之七)16

例6結果

舉例7:顯示紅色區域的數據。顯示T_StuNumber和T_Score兩張表中不重複的數據。

sql join怎麼理解(SQL數據庫基礎系列之七)17

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

sql join怎麼理解(SQL數據庫基礎系列之七)18

例7結果

總結:JOIN在多表聯合查詢中經常被使用,所以請仔細區分LEFT、RIGHT、INNER和FULL OUTER的使用區别。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved