左连接,右连接,内连接

假设有A,B两个表。  
 
表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  
 
(所影响的行数为 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 并不以谁为基础,它只显示符合条件的记录.  
--------------------------------------------  
PS:   
LEFT  JOIN 操作用于在任何的  FROM  子句中,组合来源表的记录。使用  LEFT  JOIN  运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。   
 
语法: FROM  table1  LEFT  JOIN  table2  ON  table1.field1 compopr table2.field2   
 
说明:table1, table2参数用于指定要将记录组合的表的名称。  
field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。  
compopr参数指定关系比较运算符: "=" ,  "<" ,  ">" ,  "<=" ,  ">="  或  "<>" 。  
如果在 INNER  JOIN 操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误   
 
注: left right 是外连接, Inner 是内连接。
 

多看看SQL的帮助就明白了


ps:

表A和表B, 表A为左表,表B为右表,表A和表B是一对多的关系

select a.* from A a left outer join B b on a.id = b.id where a.name = 'xx' and b.age = 'xx'


根据where条件可刷选A表和B表的数据

又由于是一对多的关系, 左连接得到的结果集会比单独查询A表的结果集要多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值