首頁  >  文章  >  後端開發  >  關於left join on 和where條件放置的相關講解

關於left join on 和where條件放置的相關講解

jacklove
jacklove原創
2018-05-09 09:13:072403瀏覽

left join on 和where條件的放置問題在php中很重要,本篇會詳解其相關知識。

left join裡面帶and的查詢

SELECT p.pname,p.pcode,s.saletime from product as p left join sales_detail as s on (s.pcode=p.pcode) and s.saletime in ('2012-07-23','2012-07-05');

查出來的結果:

------- ------- ------------

| pname | pcode | saletime   |

-- ----- ------- ------------

| A     | AC    | 2012-07-23 |

| A     | AC    | 2012-07-05 |

| A     | AC    | 2012-07-05 |

| B     | DE   | NULL | B     | DE   |

NULL

| | C     | XXX   | NULL       |

# ------- ------- ------------

直接where條件查詢

SELECT p.pname,p.pcode,s.saletime from product as p left join sales_detail as s on (s.pcode=p.pcode) where s.saletime in ('2012-07-23', '2012-07-05');

查詢出來的結果

------- ------- ----------- -

| pname | pcode | saletime   |

------- ------- ------------

| A     | AC    | 2012-07-23 |

| A     | AC    | 2012-07-05 |

| A   #  | AC #  | AC # 2015 |

------- ------- ------------


結論:on中的條件關聯,一表資​​料不符合條件時會顯示空值。 where則輸出兩表完全滿足條件數據


left join裡面的條件:會以左表的基準數據,凡左表出現的數據均要出現,然後再進行join右表,只要關聯上的就需要查出來,如果對應的欄位沒有值或不符合條件的話就置為NULL。

SELECT p.pname,p.pcode,s.saletime from product as p left join sales_detail as s on (s.pcode=p.pcode) ;光左連接的話顯示的內容如下


# ------- ------- ------------

| pname | pcode | saletime   |

------- ------- ------------

| A     | AC    | 2012-07-23 |

| A     | AC    | 2012-07-05 |

| A     | AC    | 2012-07-05 |

# #| B    | 2012-07-05 |

o #| B     | 2012-0  |這裡面有值

| C     | XXX   | NULL       |  這裡面沒有值

------- ------- --------- ---

有值但是不符合條件的話就置為NULL。如果沒有值肯定為NULL

如果是where條件的話就一定是要滿足才行。

應用場景:例如有個主表,那以主表為基準去顯示資料可以考慮left join的方式處理

總結:


1.對於left join,不管on後面跟什麼條件,左表的數據全部查出來,因此要想過濾需把條件放到where後面

2. 對於inner join,滿足on後面的條件表的數據才能查出,可以起到過濾作用。也可以把條件放到where後面。

SQL中on條件與where條件的差異


       資料庫在連接兩張或多張表來傳回記錄時,都會產生一張中間的臨時表,然後再將這張臨時表回傳給使用者。

      使用left jion時,on和where條件的差異如下:

1、on條件是產生臨時表時所使用的條件,它不管on中的條件是否為真,都會傳回左邊表中的記錄。

2、where條件是在臨時表生成好後,再過濾臨時表的條件。這時已經沒有left join的意思(必須回傳左邊表的記錄)了,條件不為真的就全部過濾掉。

本篇對left join 和where條件的放置相關的知識做出了講解,更多的學習資料清關注p​​hp中文網即可觀看。

相關推薦:

關於php mysql模糊查詢功能的相關知識

透過php實作複製移動檔案的方法

關於jQuery 效果- 隱藏和顯示的相關知識

以上是關於left join on 和where條件放置的相關講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn