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

相关文章
相关标签/搜索