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