Join用法之疑惑
Declare @A Table (ID int,
sName varchar(20) )
Declare @Aa Table(ID int,
iPrice Decimal(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 (ID int,
sName varchar(20) )
Declare @Aa Table(ID int,
iPrice Decimal(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 反之