日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

ON、WHERE、HAVING的區別

系統 2828 0

?ON 、WHERE、HAVING都能通過限制條件篩選數據,但他們的使用及其不同。下面我們來分析三者之間的區別。

1.?????? ON 和WHERE

??????? 所有的查詢都回產生一個中間臨時報表,查詢結果就是從返回臨時報表中得到。ON和WHERE后面所跟限制條件的區別,主要與限制條件起作用的時機有關,ON根據限制條件對數據庫記錄進行過濾,然后生產臨時表;而WHERE是在臨時表生產之后,根據限制條件從臨時表中篩選結果。

???????????因為以上原因,ON和WHERE的區別主要有下:

1)? 返回結果:在左外(右外)連接中,ON會返回左表(右表)中的所有記錄;而WHERE中,此時相當于inner join,只會返回滿足條件的記錄(因為是從臨時表中篩選,會過濾掉不滿足條件的)。

2)? 速度:因為ON限制條件發生時間較早,臨時表的數據集要小,因此ON的性能要優于WHERE。

2.?????? HAVING和WHERE

????????? HAVING和WHERE的區別也是與限制條件起作用時機有關,HAVING是在聚集函數計算結果出來之后篩選結果,查詢結果只返回符合條件的分組,HAVING不能單獨出現,只能出現在GROUP BY子句中。;而WHERE是在計算之前篩選結果,如果聚集函數使用WHERE,那么聚集函數只計算滿足WHERE子句限制條件的數據,例如:

  1. SELECT? COUNT(id)? FROM?db_equip? WHERE?tb_equip_type?=?‘2’;??

???????????Count計算的結果是首先篩選設備類型為2的的設備,然后統計設備類型為2類型的數量。

?????? 在使用和功能上,HAVING和WHERE有以下區別:

1)??HAVING不能單獨出現,只能出現在GROUP BY子句之中;WHERE即可以和SELECT等其他子句搭配使用,也可以和GROUP BY子句搭配使用,WHERE的優先級要高于聚合函數高于HAVING。

2)? 因為WHERE在聚集函數之前篩選數據,HAVING在計算之后篩選分組,因此WHERE的查詢速度要比HAVING的查詢速度快。

3.?????? 總結

??????? ON、WHERE、HAVING的主要差別是其子句中限制條件起作用時機引起的,ON是在生產臨時表之前根據條件篩選記錄,WHERE是從生產的臨時表中篩選數據,而HAVING是對臨時表中滿足條件的數據,進行計算分組之后,通過HAVING限制語句篩選分組,返回結果是滿足HAVING子句限制的分組。

ON、WHERE、HAVING的區別


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 秭归县| 浙江省| 宁陵县| 墨玉县| 射阳县| 河南省| 东山县| 赞皇县| 老河口市| 塔城市| 韶山市| 白河县| 乌拉特前旗| 纳雍县| 慈利县| 长宁县| 新河县| 霍城县| 大方县| 上栗县| 阆中市| 永清县| 河池市| 八宿县| 兴义市| 建水县| 亚东县| 象州县| 长岛县| 三原县| 灵山县| 东海县| 仁布县| 荃湾区| 偃师市| 江口县| 阳春市| 紫云| 江西省| 三台县| 灵石县|