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