sql語句的內外左右連接(left join and right join)

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表沒有符合條件的數據,就顯示空值



鏈接多表,提取不同字段

[html] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. select c.id ,c.cycle_state_id as '生命週期',a.fixed_asset_no as '資產編號',s.state as '資產狀態',   
  2. syl.name as '資產負責人',d.name as '所屬部門', a.location as '存放地點',c.handled_date as '處理時間',  
  3. c.plan as '計劃修好時間',h.name as '經手人',wxr.name as '維修人',c.remark as '備註'  
  4. from itamdb2dyyh.tcycle c   
  5. left join itamdb2dyyh.tassets a on  c.assets_id = a.id  
  6. left join itamdb2dyyh.tassets_state s on  c.cycle_state_id = s.id  
  7. left join itamdb2dyyh.tuser syl on c.employee = syl.id  
  8. left join itamdb2dyyh.tuser h on c.handler = h.id  
  9. left join itamdb2dyyh.tuser wxr on c.another_id = wxr.id  
  10. left join itamdb2dyyh.tdepartment d on c.department_id = d.id  
  11. where c.cycle_state_id = 2  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章