Table A 

aid   adate 

1      a1 

2      a2 

3      a3 

TableB 

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 空字符 

http://hovertree.com/menu/sql/

同样的也有right join 

指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据 

此时的取出的是: 

1 a1 b1 

2 a2 b2 

4 空字符 b4 


LEFT JOIN 或 LEFT OUTER JOIN。 

左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行, 

而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值 



举个例子你就能知道了! 


A表(a1,b1,c1)      B表(a2,b2) 

a1   b1   c1       a2    b2 

01   数学 95       01    张三 

02   语文 90       02    李四 

03   英语 80       04    王五 

select A.*,B.* from A 

inner join B on(A.a1=B.a2) 

结果是: 

a1   b1   c1       a2    b2 

01   数学 95       01    张三 

02   语文 90       02    李四 


select A.*,B.* from A 

left outer join B on(A.a1=B.a2) 

结果是: 

a1   b1   c1       a2    b2 

01   数学 95       01    张三 

02   语文 90       02    李四 

03   英语 80       NULL  NULL 


select A.*,B.* from A 

right outer join B on(A.a1=B.a2) 

结果是: 

a1   b1   c1       a2    b2 

01   数学 95       01    张三 

02   语文 90       02    李四 

NULL NULL NULL     04    王五 


select A.*,B.* from A 

full outer join B on(A.a1=B.a2) 

结果是: 

a1   b1   c1       a2    b2 

01   数学 95       01    张三 

02   语文 90       02    李四 

03   英语 80       NULL  NULL 

NULL NULL NULL     04    王五