inner join on, left join on, right join on

系统 1546 0

1.定义

inner join(等值连接) : 仅仅返回两个表中联结字段相等的记录

left join(左联接) :返回包含左表中的全部记录和右表中联结字段相等的记录

right join(右联接) :返回包含右表中的全部记录和左表中联结字段相等的记录

 

INNER JOIN 语法: 

INNER JOIN 连接两个数据表的使用方法:

SELECT * FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号


2.实例

表A记录例如以下:
aID               a Num    
1                  a20050111
2                  a20050112
3                  a20050113
4                  a20050114
5                  a20050115

表B记录例如以下:
bID               bName
1                   2006032401
2                  2006032402
3                  2006032403
4                  2006032404
8                  2006032408


实验例如以下:
1.left join

sql语句例如以下: 
select * from A
left join B 
on A.aID = B.bID

结果例如以下:
aID               aNum                          bID                  bName
1                   a20050111                1                      2006032401
2                   a20050112                2                     2006032402
3                   a20050113                3                     2006032403
4                   a20050114                4                     2006032404
5                   a20050115                NULL              NULL
(所影响的行数为 5 行)

结果说明 :
               left join是以A表的记录为基础的,A能够看成左表,B能够看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会所有表示出来,而右表(B)仅仅会显示符合搜索条件的记录(样例中为: A.aID = B.bID).
B表记录不足的地方均为NULL.

2.right join
sql语句例如以下: 
select * from A
right join B 
on A.aID = B.bID
结果例如以下:
aID               aNum                          bID                  bName
1                   a20050111                1                      2006032401
2                   a20050112                2                     2006032402
3                   a20050113                3                     2006032403
4                   a20050114                4                     2006032404
NULL           NULL                          8                     2006032408
(所影响的行数为 5 行)
结果说明 :
        细致观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.


3.inner join
sql语句例如以下: 
select * from A
innerjoin B 
on A.aID = B.bID

结果例如以下:
aID               aNum                          bID                  bName
1                   a20050111                1                      2006032401
2                   a20050112                2                     2006032402
3                   a20050113                3                     2006032403
4                   a20050114                4                     2006032404

结果说明 :
        非常明显,这里仅仅显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它仅仅显示符合条件的记录.  还有就是inner join 能够结合where语句来使用 如:   select * from A innerjoin B on A.aID = B.bID where b.bname='2006032401' 这种话 就仅仅会放回一条数据了

inner join on, left join on, right join on


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论