使用left join实现多表联查

left join:

         返回包括左表中的所有的记录和右表连接字段相等的记录

                 select * from A left join B on A.id = B.id

        因为left join是以左表为主表,所以只要左表有数据,不管右表有没有数据

(如果右表没有数据则为null),查询结果都会存在

right join:

        返回包括右表中的所有的记录和左表连接字段相等的记录

               select * from A right join B on A.id = B.id

inner join:

       等值连接,只返回两个表中连接字段相等的值

 

left join练习

       逻辑是组织下面有部门,部门下面有用户,组织和部门通过organization_id字段关联,

部门和用户通过department_id关联

组织表(t_organization)

使用left join实现多表联查_第1张图片

部门表(t_department)

使用left join实现多表联查_第2张图片

用户表(t_user)

使用left join实现多表联查_第3张图片

(1)两张表的查询

查询所有组织信息以及下属中所有部门信息

select * from 
      t_organization AS o
 left join 
      t_department AS d 
   on
      o.organization_id = d.organization_id;

   查询结果如下:

使用left join实现多表联查_第4张图片

(2)三张表查询

查询所有组织信息以及下属所有部门信息以及下属所有用户信息:

select * from
           t_organization AS o 
 left join 
           t_department AS d 
     ON 
o.organization_id = d.organization_id 
  left join 
           t_user AS u 
     ON
d.department_id = u.department_id;

查询结果如下:

使用left join实现多表联查_第5张图片

 

 

 

 

 

 

你可能感兴趣的:(使用left,join实现多表联查)