SQL語句中left join、right join 以及inner join的區別

在SQL語句中使用的連接通常有以下三種連接:

  • left join(左聯接) 返回包括左表中的所有記錄和右表中聯結字段相等的記錄
  • right join(右聯接) 返回包括右表中的所有記錄和左表中聯結字段相等的記錄
  • inner join(等值連接) 只返回兩個表中聯結字段相等的行

區別

left join(左聯接)和right join(右聯接)的區別在於:以哪個表爲準(主表的數據都會出現在查詢記錄中)

SQL示例如下:
如有以下兩張表course表和teacher表:

這裏寫圖片描述
course表

這裏寫圖片描述
teacher表

SQL代碼示例

left join示例

select teacher.*,course.* from teacher left JOIN course 
on (teacher.sno=course.sno) 

查詢結果如下:

這裏寫圖片描述

結果說明:
left join是以teacher表的記錄爲基礎的,teacher表可以看成左表,course表可以看成右表,left join是以左表爲準的.
換句話說,左表(teacher)的記錄將會全部表示出來,而右表(course)只會顯示符合搜索條件的記錄.
B表記錄不足的地方均爲NULL.

right join示例

select teacher.*,course.* from teacher right JOIN course
on (teacher.sno=course.sno) 

查詢結果如下:

這裏寫圖片描述

結果說明:
和left join的結果剛好相反,這次是以右表(course)爲基礎的,teacher表不足的地方用NULL填充.

inner join示例

select teacher.*,course.* from teacher INNER JOIN course 
on (teacher.sno=course.sno) 

查詢結果如下:

這裏寫圖片描述

結果說明:
這裏只顯示出了teacher.sno=course.sno的記錄.這說明inner join並不以誰爲基礎,它只顯示符合條件的記錄.

發佈了101 篇原創文章 · 獲贊 139 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章