SQL語句中left join、right join 以及inner join的區別
阿新 • • 發佈:2019-02-11
在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並不以誰為基礎,它只顯示符合條件的記錄.