sqlserver數據庫在查詢過濾的時辰,經常需要聯系關系其他的表結合查詢,當需要同時知足兩張表的成果的時辰,就可以利用INNER JOIN查詢了
建立一個姑且表,用于演示sqlserver語法中的INNER JOIN利用
IF OBJECT_ID('tempdb..#tmp1') IS NOT NULL DROP TABLE #tmp1;
CREATE TABLE #tmp1(
EName varchar(50), -- 姓名
EAddress varchar(200) -- 地址
);
建立別的一個姑且表,用于演示sqlserver語法中的INNER JOIN利用
IF OBJECT_ID('tempdb..#tmp2') IS NOT NULL DROP TABLE #tmp2;
CREATE TABLE #tmp2(
EName varchar(50), -- 姓名
ETitle varchar(200) -- 頭銜
);
往姑且表中插入幾行測試數據,此中包羅插入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', '司理');
查詢姑且表中的測試數據
select * from #tmp1;
select * from #tmp2;
利用INNER JOIN聯系關系兩張表,查詢地址不為空的成果,這種寫法其實是不保舉的
select *
from #tmp1 a
inner join #tmp2 b on b.EName = a.EName and a.EAddress IS NOT NULL
利用INNER JOIN聯系關系兩張表,查詢地址不為空的成果,保舉寫法,join子句中不要帶過濾前提,僅含聯系關系前提
select *
from #tmp1 a
inner join #tmp2 b on b.EName = a.EName
where a.EAddress IS NOT NULL
從上面兩種寫法的成果不異可以看出,利用inner join聯系關系的環境,過濾語句寫在join子句和where子句是一樣的結果。 可是,其他聯系關系,如left join前提寫在兩個處所的結果是紛歧樣的
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!