Mysql left join、right join、inner join的區別以及適用場景


前言:

內連接:

  內連接即等值連接

  select a.name,b.age from a inner join b on a.id = b.id;

  select a.name,b.age from a,b where a.id = b.id;

左連接:

  在等值連接的基礎上加上主表(左表)中未匹配的記錄

  select a.name,b.age from a left outer join b on a.id=b.id;

  select a.name,b.age,c.sex from a left outer join b on a.id = b.id left outer join on a.id = c.id;

右連接:

  在等值連接的基礎上加上主表(右表)中未匹配的記錄

  select a.name,b.age from a right outer join b on a.id=b.id;

  select a.name,b.age,c.sex from a right outer b on a.id = b.id right outer join c on b.id = c.id;


注意: 可以將a left outer join b on a.id = b.id看成是一張C表 on 后面的條件無論是否為真,都返回a表的全部記錄.

 

以下轉載自:https://blog.csdn.net/fashion2014/article/details/78826299

 

left join(左連接) 返回包括左表中的所有記錄和右表中連接字段相等的記錄 

Table A

id name

01 abc

02 ab

 

Table B

id   cnt

01   3

03   4

Select A.id,A.name,B.cnt A leftjoin B on A.id=B.id

結果

id name cnt

01 abc   3

02 ab    null

 

特別地,也有記錄條數大於左邊表的時候,例如:

Table A

id name

01 abc

02 ab

 

Table B

id   cnt

01   3

01   5

03   4

Select A.id,A.name,B.cnt A left join B on A.id=B.id

結果

id name cnt

01 abc   3

01 abc   5

02 ab    null

結果是3條記錄,比左連接左邊的表table A的記錄條數2還要多。

連接字段即兩表的id字段

right join(右連接) 返回包括右表中的所有記錄和左表中連接字段相等的記錄

 

Table B

id   cnt

01   3

03   4


Table A

id name

01 abc

02 ab

 

Select A.id,A.name,B.cnt B right join A on A.id=B.id

結果

id name cnt

01 abc   3

02 ab    null


左連接和右連接很相似,只是左右表位置的不同罷了。適用場景,如:員工表中有個字段是詳細地址信息表的主鍵id,這兩個表相關聯時,就可以用左連接或右連接,因為在詳細地址信息表中找不到某員工的地址信息也要將員工這條記錄顯示出來,相應的詳細地址信息字段為空即可,而不能因為地址沒有存在數據庫里,這個員工就沒了(簡單理解成不重要的信息不影響整條記錄的顯示)

inner join(等值連接、內連接) 只返回兩個表中連接字段相等的行

Table A

id name

01 abc

02 ab

 

Table B

id   cnt

01   3

03   4

Select A.id,A.name,B.cnt A inner join B on A.id=B.id

結果

id name cnt

01 abc   3

內連接的適用場景:相連接的兩個表中必須在某個字段上有相等的值才可以將整條記錄顯示出來,如一條服務單記錄在了兩個表中,A表中記錄了該服務單的服務時間、坐席名稱和錄音地址等基本信息,B表中記錄了該服務單的業務詳情,如保險單號,車牌號,保單日期等,當顯示該服務單時,要將A表與B表做內連接,因為少這兩表任何一個表,該服務單都不算完整,缺失的信息會使業務上沒法繼續。

總結:可以將可使用左連接和右連接的兩個表理解成其中一個表的信息明顯比另外一個表的信息重要得多;使用內連接的兩個表理解成重要程度區別不太大的兩個表。

注意:看“重要”與否的標准要對於查詢結果的顯示而言。

轉載:

https://blog.csdn.net/fashion2014/article/details/78826299

 

Mysql 中的幾種join 及 full join問題

參考文檔1:

https://www.cnblogs.com/canger/p/9760217.html

參考文檔2:

https://blog.csdn.net/u012410733/article/details/63684663

參考文檔3:

https://segmentfault.com/a/1190000017369618

參考文檔4:

https://www.cnblogs.com/zxlovenet/p/4005256.html


免責聲明!

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



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