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