inner join 與 left join 和right join之間的區別


 

要對這個理解之前,我們先對相關連接來做一個回憶。

首先做試驗的兩張表數據如下:student表和對應的grade成績表

 

 

1:inner join ,inner join可以理解為“有效的連接”,就是根據on后面的關聯條件,兩張表中都有的數據才會顯示,下面舉個例子

SELECT
	*
FROM
	student stu
 INNER JOIN grade gra on stu.id = gra.c_stuId

 查詢結果如下:

可以看到,id=3的這條數據並沒有查出來,這是因為在grade里面,c_stuId並沒有等於3的這條數據。根據上面也可以看出,其實 INNER JOIN可以直接用where來替代。

2:left join:理解為“主全顯,后看on”(主表數據不受影響),即主表全顯示,連接后的表看on后面的選擇條件,left join后面的條件,並不會影響左表的數據顯示,左表數據會全部顯示出來,連接的表如果沒有數據,則全部顯示為null,看下面例子:

SELECT
	*
FROM
	student stu
 LEFT JOIN grade gra on stu.id = gra.c_stuId

 結果如下:

可以看出,左表student數據全部都顯示出來,而連接的表,注意看紅色部分,因為沒有數據,則全部顯示為null。這也和剛剛說的想符合,連接的主表student數據不受影響,全顯示,連接后的表數據看on后面的條件。

 3:right join  right join理解為“主看on,后全顯”(右表數據不受影響),即右表數據全部顯示,主表數據看on后面的選擇條件,看下面例子:

1 SELECT
2     *
3 FROM
4     student stu
5  RIGHT JOIN grade gra on stu.id = gra.c_stuId

 

可以看出。right join對右邊連接的grade表數據沒有影響,全部顯示出來,而對左表的數據則是根據篩選后的條件來顯示,其余的顯示為null;

綜上,可以對他們之間的使用有較基礎的理解。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM