A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 严鹏 黑马帝   /  2012-2-10 08:19  /  1741 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

哪位大侠能够用通俗一点的语言介绍一下SQL中Inner join、left join和right join之间的区别呀?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

2 个回复

倒序浏览
举个例子你就能知道了!
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    王五

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行

例如:
表A:
userID    numberA
1                12
2                15
3                17

表B:
userID      numberB
1                  77
2                  65
5                  78

select *
from A left join B
where A.userId=B.userID

结果是:
userID  numberA   userID   numberB
1            12             1         77
2            15             2         65
3            17            null       null

select *
from A right join B
where A.userId=B.userID

结果是:
userID  numberA   userID   numberB
1            12             1         77
2            15             2         65
null         null            5         78

select *
from A inner join B
where A.userId=B.userID

结果是:
userID  numberA   userID   numberB
1            12             1         77
2            15             2         65

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马