sqlserver左关联LEFT JOIN的使用与注意事项

 时间:2026-02-15 09:12:36

1、创建一个临时表,用于演示sqlserver语法中的LEFT JOIN使用

IF OBJECT_ID('tempdb..#tmp1') IS NOT NULL DROP TABLE #tmp1; 

CREATE TABLE #tmp1(

    Code varchar(50),             -- 编码

    Remark varchar(200)        -- 备注

);

sqlserver左关联LEFT JOIN的使用与注意事项

2、创建另外一个临时表,用于演示sqlserver语法中的LEFT JOIN使用

IF OBJECT_ID('tempdb..#tmp2') IS NOT NULL DROP TABLE #tmp2; 

CREATE TABLE #tmp2(

    Code varchar(50),          -- 编码

    Title varchar(200)          -- 职位

);

sqlserver左关联LEFT JOIN的使用与注意事项

3、往临时表中插入几行测试数据,其中包括插入Null值

insert into #tmp1(Code, Remark) values('Code1', '北京');

insert into #tmp1(Code, Remark) values('Code10', '上海');

insert into #tmp1(Code, Remark) values('Code100', '巴黎');

insert into #tmp2(Code, Title) values('Code1', NULL);

insert into #tmp2(Code, Title) values('Code10', '职员');

insert into #tmp2(Code, Title) values('Code99', '经理');

sqlserver左关联LEFT JOIN的使用与注意事项

4、查询临时表中的测试数据

select * from #tmp1;

select * from #tmp2;

sqlserver左关联LEFT JOIN的使用与注意事项

5、使用LEFT JOIN关联两张表,以第一个临时表为准,查询职位不为空的结果,正常写法如下

select * 

from #tmp1 a

left join #tmp2 b on b.Code = a.Code and b.Title IS NOT NULL 

sqlserver左关联LEFT JOIN的使用与注意事项

6、使用LEFT JOIN关联两张表,以第一个临时表为准,查询职位不为空的结果,将职位不为空的条件写到Where条件中去

select * 

from #tmp1 a

left join #tmp2 b on b.Code = a.Code 

where b.Title IS NOT NULL

sqlserver左关联LEFT JOIN的使用与注意事项

7、从运行结果可以看出,对于left join条件写到join子句和写到where子句,结果是不一样的。left join关联的时候,条件写到where中,就相当于这个条件变成了inner join,必须两个表都满足才出来结果。因此,平时写left join条件的时候要注意这个差别

sqlserver左关联LEFT JOIN的使用与注意事项

  • dbEaver复制表
  • 怎么解决Xshell中文乱码
  • 如何使用FineReport报表工具进行分页预览设置
  • notepad++如何给选中文字区域标记颜色
  • java中List转String逗号分隔
  • 热门搜索
    狗吐了怎么回事 全自动洗衣机怎么脱水 脸上有红血丝怎么治 膨胀螺丝怎么安装 小臂肌肉怎么练 抖音动态壁纸怎么设置 怎么减肥肚子和腿 facebook怎么注册 韩语大叔怎么说 大姨妈来了肚子痛怎么办