sqlserver数据库LEFT JOIN和LEFT OUTER JOIN
1、创建一个临时表,用于演示sqlserver语法中的LEFT JOIN、LEFT OUTER JOIN使用
IF OBJECT_ID('tempdb..#tmp1') IS NOT NULL DROP TABLE #tmp1;
CREATE TABLE #tmp1(
Col1 varchar(50),
Col2 varchar(200)
);
2、创建另外一个临时表,用于演示sqlserver语法中的LEFT JOIN、LEFT OUTER JOIN使用
IF OBJECT_ID('tempdb..#tmp2') IS NOT NULL DROP TABLE #tmp2;
CREATE TABLE #tmp2(
Col1 varchar(50),
Col3 varchar(200)
);
3、往临时表中插入几行测试数据,其中包括插入Null值
insert into #tmp1(Col1, Col2) values('Code1', '第一列');
insert into #tmp1(Col1, Col2) values('Code10', '第二列');
insert into #tmp1(Col1, Col2) values('Code100', '第三列');
insert into #tmp2(Col1, Col3) values('Code1', NULL);
insert into #tmp2(Col1, Col3) values('Code10', '职员');
insert into #tmp2(Col1, Col3) values('Code99', '经理');
4、查询临时表中的测试数据
select * from #tmp1;
select * from #tmp2;
5、使用LEFT JOIN关联两张表,以第一个临时表为准,查询Col3不为空的结果
select *
from #tmp1 a
left join #tmp2 b on b.Col1 = a.Col1 and b.Col3 IS NOT NULL
6、使用LEFT OUTER JOIN关联两张表,以第一个临时表为准,查询Col3不为空的结果
select *
from #tmp1 a
left outer join #tmp2 b on b.Col1 = a.Col1 and b.Col3 IS NOT NULL
7、从运行结果可以看出,对于left join和left outer join两种写法在sqlserver中其实是一样的效果。平时写sql语句的时候不必纠结两种写法,就使用left join即可