最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL left join操作中on和where放置條件的區(qū)別介紹

 更新時間:2019年01月25日 11:20:48   作者:從別后  
這篇文章主要給大家介紹了關于MySQL left join操作中on和where放置條件的區(qū)別的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧

優(yōu)先級

兩者放置相同條件,之所以可能會導致結果集不同,就是因為優(yōu)先級。on的優(yōu)先級是高于where的。

首先明確兩個概念:

  • LEFT JOIN 關鍵字會從左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中沒有匹配的行。
  • 數據庫在通過連接兩張或多張表來返回記錄時,都會生成一張中間的臨時表,然后再將這張臨時表返回給用戶。

在left join下,兩者的區(qū)別:

  • on是在生成臨時表的時候使用的條件,不管on的條件是否起到作用,都會返回左表 (table_name1) 的行。
  • where則是在生成臨時表之后使用的條件,此時已經不管是否使用了left join了,只要條件不為真的行,全部過濾掉。

測試

表1:table1

id No
1 n1
2 n2
3 n3

表2:table2

No name
n1 aaa
n2 bbb
n3 ccc
select a.id,a.No,b.name from table1 a left join table2 b on (a.No = b.No and b.name='aaa');
select a.id,a.No,b.name from table1 a left join table2 b on (a.No = b.No) where b.name='aaa';

第一個結果集:

|id |No |name|
|---|---|---|
|1 |n1 |aaa|
|2 |n2 |(Null)|
|3 |n3 |(Null)| 

第二個結果集:

|id |No |name|
|---|---|---|
|1 |n1 |aaa|

第一個sql的執(zhí)行流程:首先找到b表的name為aaa的記錄行(on (a.No = b.No and b.name='aaa') )。然后找到a的數據(即使不符合b表的規(guī)則),生成臨時表返回用戶。

第二個sql的執(zhí)行流程:首先生成臨時表,然后執(zhí)行where過濾b.name='aaa'不為真的結果集,最后返回給用戶。

因為on會首先過濾掉不符合條件的行,然后才會進行其它運算,所以按理說on是最快的。

在多表查詢時,on比where更早起作用。系統(tǒng)首先根據各個表之間的聯(lián)接條件,把多個表合成一個臨時表后,再由where進行過濾,然后再計算,計算完后再由having進行過濾。由此可見,要想過濾條件起到正確的作用,首先要明白這個條件應該在什么時候起作用,然后再決定放在那里。

對于JOIN參與的表的關聯(lián)操作,如果需要不滿足連接條件的行也在我們的查詢范圍內的話,我們就必需把連接條件放在ON后面,而不能放在WHERE后面,如果我們把連接條件放在了WHERE后面,那么所有的LEFT,RIGHT,等這些操作將不起任何作用,對于這種情況,它的效果就完全等同于INNER連接。對于那些不影響選擇行的條件,放在ON或者WHERE后面就可以。

記?。核械倪B接條件都必需要放在ON后面,不然前面的所有LEFT,和RIGHT關聯(lián)將作為擺設,而不起任何作用。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • MySQL存儲過程參數的用法及說明

    MySQL存儲過程參數的用法及說明

    這篇文章主要介紹了MySQL存儲過程參數的用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Windows 下 MySQL 8.X 的安裝教程

    Windows 下 MySQL 8.X 的安裝教程

    這篇文章主要介紹了Windows 下 MySQL 8.X 的安裝教程,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • Mysql大小寫敏感的問題

    Mysql大小寫敏感的問題

    這篇文章主要介紹了Mysql大小寫敏感的問題的相關資料,需要的朋友可以參考下
    2015-03-03
  • 往MySQL中存儲圖片的方法

    往MySQL中存儲圖片的方法

    這篇文章主要介紹了往MySQL中存儲圖片的方法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • MySQL之淺談DDL和DML

    MySQL之淺談DDL和DML

    大家好,本篇文章主要講的是MySQL之淺談DDL和DML,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • mysql免安裝沒有任何root權限

    mysql免安裝沒有任何root權限

    這篇文章主要介紹了mysql免安裝沒有任何root權限的安裝與配置教程,本文圖文并茂給大家介紹的非常詳細,需要的朋友參考下
    2017-01-01
  • MySQL不用like+%實現模糊查詢

    MySQL不用like+%實現模糊查詢

    本文主要介紹了MySQL不用like+%實現模糊查詢,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • linux下mysql亂碼問題的解決方案

    linux下mysql亂碼問題的解決方案

    今天小編就為大家分享一篇關于linux下mysql亂碼問題的解決方案,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • mysql報錯RSA?private?key?file?not?found的解決方法

    mysql報錯RSA?private?key?file?not?found的解決方法

    當MySQL報錯RSA?private?key?file?not?found時,可能是由于MySQL的RSA私鑰文件丟失或者損壞導致的,此時可以重新生成RSA私鑰文件,以解決這個問題
    2023-06-06
  • mac安裝mysql初始密碼忘記怎么辦

    mac安裝mysql初始密碼忘記怎么辦

    這篇文章主要為大家詳細介紹了mac安裝mysql忘記初始密碼的解決辦法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評論

威海市| 禄劝| 浦县| 荥阳市| 湘阴县| 泽州县| 嵊泗县| 治县。| 阳高县| 宜章县| 哈密市| 宕昌县| 汉源县| 沽源县| 丹棱县| 绍兴县| 沁水县| 普兰店市| 巴林左旗| 临湘市| 济源市| 临猗县| 阳春市| 云霄县| 南投县| 梓潼县| 都江堰市| 措美县| 海南省| 濮阳县| 长泰县| 乌兰县| 陆良县| 彭泽县| 金阳县| 乌拉特中旗| 上杭县| 沅江市| 广河县| 鄂温| 朝阳市|