Chinaunix首页 | 论坛 | 博客
  • 博客访问: 323187
  • 博文数量: 72
  • 博客积分: 3030
  • 博客等级: 中校
  • 技术积分: 820
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-22 16:11
文章分类

全部博文(72)

文章存档

2016年(2)

2015年(1)

2014年(1)

2011年(2)

2010年(3)

2009年(7)

2008年(15)

2007年(40)

2006年(1)

我的朋友

分类: 数据库开发技术

2015-01-06 17:35:05

源文地址:http://blog.csdn.net/cugwei/article/details/544705

SQL 之JOIN 用法完全版

一、各种JOIN的含义
SQL中大概有这么几种JOIN:
cross join
inner join
left outer join
right outer join
full outer join
首先都是基于cross join(笛卡尔乘积),然后是inner join,在笛卡尔乘积的结果集中去掉不符合连接条件的行。
left outer join 是在inner join的结果集上加上左表中没被选上的行,行的右表部分每个字段都用NUll填充。
right outer join 是在inner join的结果集上加上右表中没被选上的行,行的左表部分全用NULL填充。
outer的意思就是"没有关联上的行"。

二、旧式写法和标准写法:
1、INNER Join code as the following:
Select * from A a, B b where a.categoryID = b.categoryID;
Equals:
Select * from A a inner join B b on a.categoryID = b.categoryID;
2、OUTER Join code as the following
select * from A a full(left/right) outer join B b on a on a.categoryID = b.categoryID;
Equals::
Select * from A a, B b where a.categoryID *= b.categoryID;
Select * from A a, B b where a.categoryID =* b.categoryID;

三、例子
Table A have 12( 8+4) entries, 8 entries have valid relation with B
Table B have 80(77+3) entries , 77 entries have valid relation with A.
then the return amount of join is :
cross join : 12*80
inner join : 77
full outer join : 77+4+3
left outer join: 77 + 4
right outrer join: 77 + 3
阅读(502) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~