mssql sqlserver left join 后面跟On 和 where 的区别说明


摘要:
下文通过举例的方式讲述 left join 后面跟On和where的区别说明,如下所示:
实验环境:sql server 2008 R2


一、left join on和where 区别说明

left join 后面的on 关键字只用于右表的连接
left join 后面无论放多少On条件都会将左表的数据全部显示出来

left join 后面的On条件只用于限制“右表的连接数据”起作用
——————————————————–
left join 后面的where 关键则用于限制返回行,准确的说
后面使用where条件可使left join 达到(inner join)的功能

二、举例验证

 create table [maomao365.com_a]
 (keyIdA int,infoA varchar(30))
 go
 create table [maomao365.com_b]
 (keyIdB int,infoB varchar(30))
 go
 ---基础数据生成
insert into [maomao365.com_a]
(keyIdA,infoA)values
(1,'sqlserver'),(2,N'sql爱好者')

insert into [maomao365.com_b]
(keyIdB,infoB)values
(1,'other'),(4,N'sql爱好者')
go
/*
此处使用了a.keyIdA=2,但是左表中
a.keyIDA=1的数据都显示出来了
只是B表中,没有关联出任何数据
*/
select * from [maomao365.com_a] a
left join [maomao365.com_b] b on a.keyIdA =b.keyIdB 
and a.keyIdA =2 

---where展示
select * from [maomao365.com_a] a
left join [maomao365.com_b] b  on 1=1
where  a.keyIdA =1 and a.keyIdA =b.keyIdB 
go
truncate table [maomao365.com_a]
drop     table [maomao365.com_a]
MSSQL_sqlserver_leftjoin后的on和where区别

MSSQL_sqlserver_leftjoin后的on和where区别