淺談!SQL語句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的區別


  今天的工作學習之路是一個數據庫的小知識,當時沒有區分出所以然,特此記錄分享一下子。

  眾所周知,數據庫的表都是單獨存在的,但是當我們進行聯合查詢(多表查詢)時,我們獲得數據庫返回的值時就好像在一張表里一樣,這是因為在進行聯合查詢時數據庫會生成一個臨時表返回給我們所想要的數據信息,這時我們都是通過LEFT JOIN 等語句進行相關聯,並且我們也會為我們所想查詢的數據進行一個篩選,這時我們就會用到過濾語句。

  LEFT JOIN ON WHERE:在臨時表生成后,再對臨時表的數據進行過濾,再返回左表。

  LEFT JOIN ON AND:在臨時表生成的過程時,ON中的條件不管是否為真,都將返回左表。

  例如:

      表1.id  表1.value      表2.value  表2.name

         1     100        100      開心

       2     200        200     很開心

       3       300        300      超級開心

       4     400        400      無敵開心

SQL語句如下:

  [1] SELECT * FROM 表1 LEFT JOIN 表2 ON (表1.value = 表2.value) WHERE 表2.name = 開心

  [2] SELECT * FROM 表1 LEFT JOIN 表2 ON (表1.value = 表2.value) ON 表2.name = 開心

當執行[1]的時候得:

      表1.id  表1.value      表2.value  表2.name

         1     100        100      開心

當執行[2]的時候得:

      表1.id  表1.value      表2.value  表2.name

         1     100        100      開心

       2     200        NULL      NULL

       3       300        NULL      NULL

       4     400        NULL      NULL

同理,RIGHT JOIN和FULL JOIN都具備這個特性,注意,INNER JOIN不具備這個特性。

  今天就這么愉快的結束吧!

  我的心願是,改變世界!


免責聲明!

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



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