sql join 的on 和 where 區別

2021-08-04 09:25:13 字數 932 閱讀 1947

這個是essay 左連線left join essay_comment,這就意味著左邊的表只要跟右邊的表聯立的條件(e.id=ec.essay_id)成立,就無論如何左邊的表記錄都會出現,哪怕其他條件 (e.deleted =0 被刪除的文章) 不成立,都會出現,就是說,這個e.deleted=0在on裡面限制不了essay。參考上圖的deleted欄位,證明on裡面的e.deleted=0沒有生效,deleted=1的essay照樣出現了。 這裡要注意的是,on裡面的條件是是必須都匹配才能使右邊的表記錄出來,否則就算deleted=1的essay出來了,但是它不同時符合e.deleted=0 and e.id=ec.essay_id,這就會使右邊的表記錄欄位時都null。

所以當上面sql 去掉on裡面的e.deleted=0

執行結果是

總結:1、如果sql用的是left join ,on後面的條件對left的表沒有作用,只對right的表有過濾作用,where語句可以對left的表有過濾作用

2、如果sql用的是right join ,on後面的條件對right的表沒有作用,只對left的表有過濾作用,where語句可以對right的表有過濾作用

參考

SQL Join的測試和分析

join分為三種 inner join,left join,right join 首先,我覺得要知道乙個概念 臨時表或者說虛擬表,join的作用就是生成乙個虛擬表,因為我本身專業並不是計算機,更不是程式設計。所以走了很多彎路,直到用了很多次資料表的關係之後,才明白這個道理。select from t...

SQL JOIN 的內連線

sql join 子句用於把來自兩個或多個表的行結合起來,基於這些表之間的共同字段,把兩個表中的資料放在乙個表中查詢 注意 join 連線有多種方式,比如內連線,外連線,交叉連線 可以和where 字句相配合進行使用 可以使用幾個操作符連線表,例如 between like 和not。這個和數學集合...

SQL JOIN 中 on 與 where 的區別

left join 左連線,返回左表中所有的記錄以及右表中連線字段相等的記錄。right join 右連線,返回右表中所有的記錄以及左表中連線字段相等的記錄。inner join 內連線,又叫等值連線,只返回兩個表中連線字段相等的行。full join 外連線,返回兩個表中的行 left join ...