首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

Join用法之疑惑解决方案

2012-01-14 
Join用法之疑惑Declare@ATable(IDint,sNamevarchar(20))Declare@AaTable(IDint,iPriceDecimal(18,2))inser

Join用法之疑惑


Declare     @A   Table     (IDint,  
sNamevarchar(20)   )

Declare   @Aa   Table(ID   int,  
iPriceDecimal(18,   2))

insert   Into   @A   Values   (1,   '笔记本 ')
Insert   into   @Aa   Values   (1,   12345.30)
Insert   Into   @Aa   Values   (1,   345.52)

Select   *   from   @A
Select   *   from   @Aa

Select   *   from   @A   a   Left   Join   @Aa   b   on   a.ID   =   b.ID
Select   *   from   @A   a   right   Join   @Aa   b   on   a.ID   =   b.ID


此处的   Left   Join   与     right   Join   有何区别?



[解决办法]

Select * from @A a right Join @Aa b on a.ID = b.ID
相当于
Select * from @Aa b left Join on @A a a.ID = b.ID
[解决办法]
@A a Left Join @Aa b
on a.ID = b.ID -- 匹配条件

首先,返回左边@A表全部记录。
其次,右边@Aa表返回配记录 + 不匹配部分返回NULL。


@A a right Join @Aa b
on a.ID = b.ID -- 匹配条件

反之。
[解决办法]
Select * from @A a Left Join @Aa b on a.ID = b.ID
将包含a中所有的记录,包含b中与a有相同ID 的记录

Select * from @A a right Join @Aa b on a.ID = b.ID
将包含b中所有的记录,包含a中与b有相同ID 的记录
[解决办法]
Declare @A Table (IDint,
sNamevarchar(20) )

Declare @Aa Table(ID int,
iPriceDecimal(18, 2))

insert Into @A Values (2, 'ibm笔记本 ')
insert Into @A Values (1, 'ibm笔记本 ')
Insert into @Aa Values (1, 12345.30)
Insert Into @Aa Values (1, 345.52)
Insert Into @Aa Values (3, 345.52)

Select * from @A
Select * from @Aa

Select * from @A a Left Join @Aa b on a.ID = b.ID
Select * from @A a right Join @Aa b on a.ID = b.ID


A LEFT join B 是以A表数据为主,当B表没有数据与之对应时B表数据以NULL形式出现,RIGHT 反之

热点排行
Bad Request.