inner join on會過濾掉兩邊空值的條件


前兩天工作過程中,遇到一個問題,關於join on查詢的,對於查出來的結果一直都很疑惑,這里記錄一下。
1.首先看下面這條sql查詢語句:

查詢出來的結果是25053

2.加個 o.lat = n.lat 的條件:

查詢出來的結果是15586

3.現在我們將條件改成 o.lat != n.lat,查出來的結果是不是應該顯示 25053-15586的差值呢?

我們發現結果並不是預想的那樣,而是125。奇怪,剩下的25053-15586-125 = 9342條數據哪里去了呢,怎么查詢不出來?

4.再看下面這條sql語句,我們過濾掉 o.lat和n.lat 都是空的情況:

9342!!
啊哈,原來如此,join on 會過濾掉兩邊都是空值的條件。
如果返回左表中為null的數據,可以使用left join,相反,如果返回右表中null的數據,使用right join。
inner join(可以簡寫成join),將不會返回左右表中均為null的數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM