1. 程式人生 > 其它 >左連線(left join) ,右連線(right join ),內連線(inner join)和全外連線(full join)的區別

左連線(left join) ,右連線(right join ),內連線(inner join)和全外連線(full join)的區別

首先呢介紹下它們的定義:

  left join (左連線):返回包括左表中的所有記錄和右表中連線欄位相等的記錄。
  right join (右連線):返回包括右表中的所有記錄和左表中連線欄位相等的記錄。
  inner join (等值連線或者叫內連線):只返回兩個表中連線欄位相等的行。
  full join (全外連線):返回左右表中所有的記錄和左右表中連線欄位相等的記錄。

明白了吧,什麼,還不懂?好,來舉個栗子:

 A表          
 
  id   name  
 
  1   張三
 
  2   李四
 
  3   王五
 
 B表
 
  id  job_num  job
    2    0001    程式設計師

3   0002    醫生  

內連線:(只有2張表匹配的行才能顯示)

select a.name,b.job from A a  inner join B b on a.id=b.id
 
  得到一條記錄: 李四  程式設計師

左連線:(左邊的表不加限制)

select a.name,b.job from A a  left join B b on a.id=b.id
 
  得到三條記錄:
 
  張三  null
 
  李四  程式設計師
 
  王五  醫生

右連線:(右邊的表不加限制)

select a.name,b.job from
A a right join B b on a.id=b.id   得到兩條記錄:   李四  程式設計師   王五  醫生

全外連線:(左右2張表都不加限制)

select a.name,b.job from A a  full join B b on a.id=b.id
 
  得到四條資料:
 
  張三  null
 
  李四  程式設計師
 
  王五  醫生