inner join on, left join on, right join on详细介绍

来源:互联网 发布:php function use as 编辑:程序博客网 时间:2024/05/21 06:59

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

 

同样的也有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    王五

 

原创粉丝点击