1. 程式人生 > >SQL語句中left join、right join 以及inner join的區別

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並不以誰為基礎,它只顯示符合條件的記錄.