left join 原理分析

left join 原理分析 [轉貼 2006-11-15 16:19:50]   
我頂  字號:  
 

案例分析

user表:html

 id   | name
 ---------
 1   | libk      
 2   | zyfon
 3   | daodao


user_action表:sql

user_id |  action
---------------
    1     |  jump
    1     |    kick
    1     |    jump
    2     |    run
    4     |    swim

 

 

sql:
select id, name, action from user as u
left join user_action a on u.id = a.user_idide

result:
    id  |   name    |   action
--------------------------------
    1   |   libk      |   jump    ①
    1   |   libk      |   kick     ②
    1   |   libk      |   jump    ③
    2   |   zyfon    |   run      ④
    3   |   daodao |   null      ⑤spa

 

分析:
注意到user_action中還有一個user_id=4, action=swim的紀錄,可是沒有在結果中出現,
而user表中的id=3, name=daodao的用戶在user_action中沒有相應的紀錄,可是卻出如今告終果集中
由於如今是left join,全部的工做以left爲準.
結果1,2,3,4都是既在左表又在右表的紀錄,5是隻在左表,不在右表的紀錄

 sql例子:code

select employee.*, department.name as deptname
 from employee
 left  join department on employee.department = department.code
 where employee.isuse = '1'
  and employee.code = '3700000000'orm

 

結論:

咱們能夠想象left join 是這樣工做的
從左表讀出一條,選出全部與on匹配的右表紀錄(n條)進行鏈接, 造成n條紀錄(包括重複的行,如:結果1和結果3),
若是右邊沒有與on條件匹配的表,那鏈接的字段都是null.
而後繼續讀下一條。
htm

LEFT  JOIN 等價於LEFT OUTER JOIN        是一個表知足條件的行,和另外一個表的全部行。blog

相關文章
相關標籤/搜索