<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        MySQLleftjoin操作中on和where放置條件的區別介紹

        來源:懂視網 責編:小采 時間:2020-11-09 20:20:35
        文檔

        MySQLleftjoin操作中on和where放置條件的區別介紹

        MySQLleftjoin操作中on和where放置條件的區別介紹:優先級 兩者放置相同條件,之所以可能會導致結果集不同,就是因為優先級。on的優先級是高于where的。 首先明確兩個概念: LEFT JOIN 關鍵字會從左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中沒有匹配的行。 數據庫在通過
        推薦度:
        導讀MySQLleftjoin操作中on和where放置條件的區別介紹:優先級 兩者放置相同條件,之所以可能會導致結果集不同,就是因為優先級。on的優先級是高于where的。 首先明確兩個概念: LEFT JOIN 關鍵字會從左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中沒有匹配的行。 數據庫在通過

        首先明確兩個概念:

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

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

        表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的執行流程:首先找到b表的name為aaa的記錄行(on (a.No = b.No and b.name='aaa') )。然后找到a的數據(即使不符合b表的規則),生成臨時表返回用戶。

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

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

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

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

        記住:所有的連接條件都必需要放在ON后面,不然前面的所有LEFT,和RIGHT關聯將作為擺設,而不起任何作用。

        總結

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MySQLleftjoin操作中on和where放置條件的區別介紹

        MySQLleftjoin操作中on和where放置條件的區別介紹:優先級 兩者放置相同條件,之所以可能會導致結果集不同,就是因為優先級。on的優先級是高于where的。 首先明確兩個概念: LEFT JOIN 關鍵字會從左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中沒有匹配的行。 數據庫在通過
        推薦度:
        標簽: 條件 的區別 放置
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲精品无码专区在线在线播放| 国产亚洲真人做受在线观看| 日韩毛片免费一二三| 亚洲日韩精品无码一区二区三区 | 女同免费毛片在线播放| 亚洲欧洲日产国产综合网| 最近中文字幕mv手机免费高清| 无套内谢孕妇毛片免费看看| 亚洲国产人成在线观看69网站 | 日本亚洲免费无线码| 亚洲男女内射在线播放| 日韩免费人妻AV无码专区蜜桃| 亚洲中文字幕无码av永久| 综合亚洲伊人午夜网| 国产精品美女午夜爽爽爽免费| 一级毛片不卡免费看老司机| 18亚洲男同志videos网站| 又黄又大又爽免费视频| 在线看无码的免费网站| 天天综合亚洲色在线精品| 久久精品国产精品亚洲毛片| 可以免费观看一级毛片黄a | 拔擦拔擦8x华人免费久久| 久久久免费的精品| 极品美女一级毛片免费| 亚洲H在线播放在线观看H| 国产亚洲精品自在久久| 日韩免费视频播放| 亚洲免费福利视频| WWW国产成人免费观看视频| 中文字幕亚洲码在线| 久久亚洲国产精品五月天| 免费a在线观看播放| 嘿嘿嘿视频免费网站在线观看| 中文字幕av无码不卡免费| 亚洲s码欧洲m码吹潮| 亚洲最大在线视频| 亚洲va无码手机在线电影| 亚洲日韩在线观看| 国产成人免费全部网站| 好大好硬好爽免费视频|