有意思的left join語(yǔ)句 問(wèn)題的初衷是,在一個(gè)SQL語(yǔ)句中,有l(wèi)eft join, 我加條件在where后面發(fā)生死鎖,于是想是否可以把條件加入到left join的on后面? www.2cto.com 也就是下面兩個(gè)語(yǔ)句是否效果一樣: 語(yǔ)句1: select t1.*,t2.* from t1 left join t2 on t1
有意思的left join語(yǔ)句
問(wèn)題的初衷是,在一個(gè)SQL語(yǔ)句中,有l(wèi)eft join, 我加條件在where后面發(fā)生死鎖,于是想是否可以把條件加入到left join的on后面? www.2cto.com
也就是下面兩個(gè)語(yǔ)句是否效果一樣:
語(yǔ)句1: select t1.*,t2.* from t1 left join t2 on t1.id=t2.id and t1.feild=1
語(yǔ)句2: select t1.*,t2.* from t1 left join t2 on t1.id=t2.id where t1.feild=1
數(shù)據(jù)環(huán)境:
create table t1(id int, feild int);
insert into t1 values(1 , 1);
insert into t1 values(1 , 2);
insert into t1 values(1 , 3);
insert into t1 values(1 , 4);
insert into t1 values(2 , 1);
insert into t1 values(2 , 2);
create table t2(id int, feild int);
insert into t2 values(1 , 1);
insert into t2 values(1 , 2);
insert into t2 values(1 , 5);
insert into t2 values(1 , 6);
insert into t2 values(2 , 1);
insert into t2 values(2 , 3);
經(jīng)過(guò)驗(yàn)證發(fā)現(xiàn): 語(yǔ)句1可以這樣來(lái)理解,把left join 的on后面的所有條件看成一個(gè)整體,這里就是t1.id=t2.id and t1.feild=1看成一個(gè)整體,坐連接的時(shí)候,串t2表,看是否有滿(mǎn)足條件的記錄,如果沒(méi)有就串null值。
語(yǔ)句2的理解簡(jiǎn)單了,現(xiàn)在left join,在最后結(jié)果集中做where過(guò)濾
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com