sqlserver在結合查詢數據的時辰,有時辰但愿以某一個張表的成果為準,聯系關系別的一張表,不管是否聯系關系得上,第一張表的成果都呈現在成果集中。這個時辰就可以利用左聯系關系left join了。可是,前提寫的分歧位置,查詢成果將紛歧樣
建立一個姑且表,用于演示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利用
IF OBJECT_ID('tempdb..#tmp2') IS NOT NULL DROP TABLE #tmp2;
CREATE TABLE #tmp2(
Code varchar(50), -- 編碼
Title varchar(200) -- 職位
);
往姑且表中插入幾行測試數據,此中包羅插入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', '司理');
查詢姑且表中的測試數據
select * from #tmp1;
select * from #tmp2;
利用LEFT JOIN聯系關系兩張表,以第一個姑且表為準,查詢職位不為空的成果,正常寫法如下
select *
from #tmp1 a
left join #tmp2 b on b.Code = a.Code and b.Title IS NOT NULL
利用LEFT JOIN聯系關系兩張表,以第一個姑且表為準,查詢職位不為空的成果,將職位不為空的前提寫到Where前提中去
select *
from #tmp1 a
left join #tmp2 b on b.Code = a.Code
where b.Title IS NOT NULL
從運行成果可以看出,對于left join前提寫到join子句和寫到where子句,成果是紛歧樣的。left join聯系關系的時辰,前提寫到where中,就半斤八兩于這個前提釀成了inner join,必需兩個表都知足才出來成果。是以,日常平凡寫left join前提的時辰要注重這個不同
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!