多语言展示
当前在线:888今日阅读:113今日分享:31

sqlserver关联查询的INNER JOIN使用写法

sqlserver数据库在查询过滤的时候,经常需要关联其他的表联合查询,当需要同时满足两张表的结果的时候,就可以使用INNER JOIN查询了
方法/步骤
1

创建一个临时表,用于演示sqlserver语法中的INNER JOIN使用IF OBJECT_ID('tempdb..#tmp1') IS NOT NULL DROP TABLE #tmp1; CREATE TABLE #tmp1(    EName varchar(50),          -- 姓名    EAddress varchar(200)       -- 地址);

2

创建另外一个临时表,用于演示sqlserver语法中的INNER JOIN使用IF OBJECT_ID('tempdb..#tmp2') IS NOT NULL DROP TABLE #tmp2; CREATE TABLE #tmp2(    EName varchar(50),          -- 姓名    ETitle varchar(200)         -- 头衔);

3

往临时表中插入几行测试数据,其中包括插入Null值insert into #tmp1(EName, EAddress) values('员工1', '中国北京');insert into #tmp1(EName, EAddress) values('员工10', NULL);insert into #tmp1(EName, EAddress) values('员工100', '法国巴黎');insert into #tmp2(EName, ETitle) values('员工1', NULL);insert into #tmp2(EName, ETitle) values('员工10', '职员');insert into #tmp2(EName, ETitle) values('员工99', '经理');

4

查询临时表中的测试数据select * from #tmp1;select * from #tmp2;

5

使用INNER JOIN关联两张表,查询地址不为空的结果,这种写法其实是不推荐的select * from #tmp1 ainner join #tmp2 b on b.EName = a.EName and a.EAddress IS NOT NULL

6

使用INNER JOIN关联两张表,查询地址不为空的结果,推荐写法,join子句中不要带过滤条件,仅含关联条件select * from #tmp1 ainner join #tmp2 b on b.EName = a.EName where a.EAddress IS NOT NULL

7

从上面两种写法的结果相同可以看出,使用inner join关联的情况,过滤语句写在join子句和where子句是一样的效果。 但是,其他关联,如left join条件写在两个地方的效果是不一样的

推荐信息