php关联表合并成临时表— left join 用法详解

给个通俗的解释吧. 
例表a 
aid adate 
1 a1 
2 a2 
3 a3 
表b 
bid bdate 
1 b1 
2 b2 
4 b4 
两个表a,b相连接,要取出id相同的字段 
select * from a inner join b on a.aid = b.bid这是仅取出匹配的数据. 
此时的取出的是: 
1 a1 b1 
2 a2 b2 
那么left join 指: 
select * from a left join b on a.aid = b.bid 
首先取出a表中所有数据,然后再加上与a,b匹配的的数据 
此时的取出的是: 
1 a1 b1 
2 a2 b2 
3 a3 空字符 
同样的也有right join 
指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据 
此时的取出的是: 
1 a1 b1 
2 a2 b2 
4 空字符 b4

LEFT JOIN 或 LEFT OUTER JOIN。 
左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。 

 
Feedback

select * from a left join b 
on a.aid = b.bid and a.aid = 3 
等于 
select * from a left join b 
on a.aid = b.bid where a.aid = 3 or a.aid is null  
 

这只有两个表,如果有多个表呢? 

select * from a left join b on a.id=b.id left join c on a.id=c.id

--Mysql专用

select * from a left join b using(id) left join c using(id)

·关于我们·免责声明·服务条款·RSS订阅·dede168.com技术支持

Copyright © 1998-2015  All rights reserved.