【DATABASE】Left Join /Right Join/Inner Join

几种多表关联方式

Left Join

左连接: 以左表的数据为主,用某一个字段去关联右表。左表的数据会原封不动,右表中有符合左表数据的关联出来,没有则为空。

在Sql中的具体表现为

select  t1.id, t2.name from  t1 left join t2 on t1.id = t2.id

这里 left join 左侧 的就是左表,是不是很形象。
举例↓
表A记录如下:
aID     aNum
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

Right Join

同上。区别就是以右表为主。
sql的表现为

select t1.id ,t2.name from t1 right join t2 on t1.id = t2.id

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

Inner Join

inner join 并不以哪个表为基准。只选取双方都有的记录。

sql表现为

select t1.id , t2.name from t1 inner join t2 on t1.id = t2.id

结果表现为
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并不以谁为基础,它只显示符合条件的记录.

where

如果关联两张表用where这种方式的话


select t1.id,t2.name from t1 , t2 where t1.id = t2.id

据说会出现inner join一样的效果,但有待验证(我并没有验证。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值