SQL On & Having & Where區(qū)別

結(jié)論:On > Where > 聚合函數(shù) > Having

On

用于表關(guān)聯(lián)(left join,right join ...),生成臨時表時的過濾條件,On條件生效后生成臨時表,但主表記錄不會被過濾,沒有匹配條件的主表記錄的對應(yīng)列都會顯示null而已。

Where

表關(guān)聯(lián)情況下,On條件生效后生成臨時表,這時如果有Where條件,會根據(jù)該條件過濾臨時表的所有記錄,此時無論是主表還是join表都會根據(jù)條件進(jìn)行過濾。

Having

因為Having執(zhí)行時機(jī)在最后,所以可以把聚合函數(shù)當(dāng)做條件進(jìn)行過濾。

使用

  • On條件用于表關(guān)聯(lián),生效最快,但仍然會返回主表所有記錄,其次是Where條件生效,可以篩選出想要的結(jié)果數(shù)據(jù),如果有統(tǒng)計等聚合函數(shù),Having會在最后生效。
  • 如果非表關(guān)聯(lián)查詢,那么On則無法使用,如果涉及到的過濾條件也沒有涉及到計算統(tǒng)計后的字段,那么此時Having和Where的作用是一樣的,但是Where的效率較高。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容