1. 程式人生 > >mysql left join,right join,inner join 例項講解

mysql left join,right join,inner join 例項講解

表一:班級表,3條記錄。

表二:學生表,3條記錄,其中一條classid與班級表id對應。classid作為外來鍵關聯班級表id


實驗如下: 

1.left join(左聯接) 

SELECT * FROM class t1 LEFT    JOIN student t2 on  t1.id=t2.classid ; 


結果說明: 
        班級表三條記錄全部展示。left join是以t1表(班級表)的記錄為基礎的,t1可以看成左表,t2可以看成右表,left join是以左表為準的. 
換句話說,左表(班級表)的記錄將會全部表示出來,而右表(學生表)只會顯示符合搜尋條件的記錄(例子中為: t1.id=t2.classid). 


t2表記錄不足的地方均為NULL. 

2.right join(右聯接) 

SELECT * FROM class t1 RIGHT   JOIN student t2 on  t1.id=t2.classid ;


結果說明: 

        學生表三條記錄全部展示。仔細觀察一下,就會發現,和left join的結果剛好相反,這次是以右表(t2)為基礎的,t1表不足的地方用NULL填充. 

3.inner join(相等聯接或內聯接) 

SELECT * FROM class t1 INNER   JOIN student t2 on  t1.id=t2.classid ;

等同於以下SQL句: 

SELECT *  

FROM class t1,student t2   WHERE t1.id=t2.classid


結果說明: 
        只展示符合條件的一條記錄。很明顯,這裡只顯示出了 t1.id=t2.classid的記錄.這說明inner join並不以誰為基礎,它只顯示符合條件的記錄.