SQL inner join、left join、right join用法

1.鏈接運算由兩部分構成:鏈接類型與鏈接條件sql

鏈接類型可分爲測試

INNER JOIN(等值鏈接)spa

LEFT  JOIN(左聯接) 基礎

RIGHT JOIN (右聯接) 返回包括右表中的全部記錄和左表中聯結字段相等的記錄select

鏈接條件可分爲sql語句

NATURAL   天然鏈接(去掉重複屬性)搜索

ON   鏈接條件(保留重複屬性)join

USING 屬性名1,屬性名2… (保留指定重複屬性)實例

 

2.操做實例

  表A記錄以下:

  aID      aNum

   1         a2016001

   2         a2016002

   3         a2016003

   4         a2016004

   5         a2016005

 

  bID       bName

   1          bmumu001

   2          bmumu002

   3          bmumu003

   4          bmumu004

   6          bmumu006

 

 測試以下:

 1.left join

  sql語句以下:

  select * from A left join B on a.aID=b.bID

  結果以下:

 aID        aNum             bID         bNAME

 1           a2016001         1           bmumu001

 2           a2016002         2           bmumu002

 3           a2016003         3           bmumu003

 4           a2016004         4           bmumu004

 5           a2016005        NULL       NULL

   結果說明:

   left join 是以A表的記錄爲基礎的,A能夠當作左表,B能夠當作右表,left join 是以左表爲準的.換句話說,左表(A)的記錄將會所有顯示出來,

   而右表(B)只會顯示符合搜索條件的記錄(a.aID=b.bID),B表記錄不足的地方均爲NULL

 

 2.right join

  sql語句以下:

select * from A right join B on a.aID=b.bID

  結果以下:

 aID        aNum             bID         bNAME

 1           a2016001         1           bmumu001

 2           a2016002         2           bmumu002

 3           a2016003         3           bmumu003

 4           a2016004         4           bmumu004

 NULL       NULL               6           bmumu006

   結果說明:

   仔細觀察一下,就會發現和left join的結果剛剛相反, right join 是以B表的記錄爲基礎的,A表記錄不足的地方用NULL填充

 

3.inner join

  sql語句以下:

select * from A inner join B on a.aID=b.bID

  結果以下:

 aID        aNum             bID         bNAME

 1           a2016001         1           bmumu001

 2           a2016002         2           bmumu002

 3           a2016003         3           bmumu003

 4           a2016004         4           bmumu004

    結果說明:

    很明顯,inner join 只顯示了 a.aID=b.bID的記錄,這說明inner join 只顯示符合條件的記錄

相關文章
相關標籤/搜索