`
Jacular
  • 浏览: 178742 次
  • 性别: Icon_minigender_1
  • 来自: 云南
社区版块
存档分类
最新评论

SQL:左外链接、有外连接、全外连接

    博客分类:
  • SQL
 
阅读更多
SQL:左外链接、有外连接、全外连接之经典解释
假设一堆男女在教堂,有夫妇有单身的,假设男为左表,女为右表
教父说:结了婚的人请出去,结了婚的人请手拉手,于是结了婚的男女站了起来,这就是INNER 内连
教父说:男的并且和这些男的结婚的女的请出去,结了婚的人请手拉手,于是,结了婚的夫妇手拉手出去,单身的男的也出去了。这就是 LEFT 左连
教父说:女的并且和这些女的结婚的男的请出去,结了婚的人请手拉手,于是,结了婚的夫妇手拉手出去,单身的女的也出去了。这就是 RINGT 右连
教父又说:请全部人都出去,结了婚的人请手拉手,于是 结了婚的夫妇手拉手出去,单身的男的和女的各自出去了。 这就是全外连
以实例来说明
A表
ID
1
2
B表
2
3
左连:Select * From A LEFT JOIN B ON A.ID=B.ID
结果
1,null
2,2
右连:Select * From A RIGHT JOIN B ON A.ID=B.ID
结果
2,2
null,3
内连:Select * From A INNER JOIN B ON A.ID=B.ID
结果
2,2
全外连:Select * From A OUTER JOIN B ON A.ID=B.ID
结果
1,null
2,2
null,3
分享到:
评论
2 楼 yangxiutian 2012-08-14  
select * From A OUTER JOIN B ON A.ID=B.ID;是有问题的    outer关键字只能跟left或right使用 如,left outer(通常outer可以隐藏)。全连接应该用的是full   
也就是:select * from a full join b on a.id=b.id;

内连接有时还可以用自然连接实现(两个表的关联字段名字相同时):
select * from a natural join b;
语句更简洁。


纠正一下,希望楼主莫介意。
1 楼 yangxiutian 2012-08-13  
说的很形象,以后我就不会再在这三个问题上犯浑了。感谢楼主。

相关推荐

Global site tag (gtag.js) - Google Analytics