1.內連接:取的兩個表的(有能連接的字段)的交集,即字段相同的。利用內連接可獲取兩表的公共部分的記錄,
select * from A,B where A.id=B.id
與 Select * from A JOIN B ON A.id=Bid的運行結果是一樣的。
2.外連接:左右連接。
外連接分爲兩種,一種是左連接(Left JOIN)和右連接(Right JOIN)
(1)左連接(Left JOIN...ON...):左表爲基準,返回左錶行
左連接是已左邊表中的數據爲基準,若左表有數據右表沒有數據,則顯示左表中的數據右表中的數據顯示爲空。
語句如下: select * from A Left JOIN B ON A.id=B.id A的字段全有,查詢出來在結果集的左邊。
使用left join 該語句會顯示左表(A)的全部符合條件數據(兩個表的數據都會查出來),如果B表沒有符合條件的數據,就顯示空值
(2)右連接(Right JOIN...ON...):右表爲基準,返回右錶行
右聯接是左向外聯接的反向聯接。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將爲左表返回空值。
語句如下:select * from A Right JOIN B ON A.id=B.id
使用right join 該語句會顯示右表(B)的全部符合條件數據(兩個表的數據都會查出來),如果A表沒有符合條件的數據,就顯示空值
鏈接多表,提取不同字段
- select c.id ,c.cycle_state_id as '生命週期',a.fixed_asset_no as '資產編號',s.state as '資產狀態',
- syl.name as '資產負責人',d.name as '所屬部門', a.location as '存放地點',c.handled_date as '處理時間',
- c.plan as '計劃修好時間',h.name as '經手人',wxr.name as '維修人',c.remark as '備註'
- from itamdb2dyyh.tcycle c
- left join itamdb2dyyh.tassets a on c.assets_id = a.id
- left join itamdb2dyyh.tassets_state s on c.cycle_state_id = s.id
- left join itamdb2dyyh.tuser syl on c.employee = syl.id
- left join itamdb2dyyh.tuser h on c.handler = h.id
- left join itamdb2dyyh.tuser wxr on c.another_id = wxr.id
- left join itamdb2dyyh.tdepartment d on c.department_id = d.id
- where c.cycle_state_id = 2