mysql where 和 having 的區別

來源:互聯網
上載者:User

標籤:mysql where 和having的區別

作用的對象不同。WHERE 子句作用於表和視圖,HAVING 子句作用於組。

where 是對錶的篩選,而having是對彙總結果的篩選。

有時候having和where都可以達到同樣的結果,但是要優先使用where。


WHERE 在分組和聚集計算之前選取輸入行(因此,它控制哪些行進入聚集計算), 而 HAVING 在分組和聚集之後選取分組的行。因此,WHERE 子句不能包含聚集合函式; 因為試圖用聚集合函式判斷那些行輸入給聚集運算是沒有意義的。 相反,HAVING 子句總是包含聚集合函式。(嚴格說來,你可以寫不使用聚集的 HAVING 子句, 但這樣做只是白費勁。同樣的條件可以更有效地用於 WHERE 階段。)


having一般跟在group by之後,執行記錄組選擇的一部分來工作的。
where則是執行所有資料來工作的。
再者having可以用彙總函式,如having sum(qty)>1000

本文出自 “程式猿的那些年” 部落格,請務必保留此出處http://uyuyuuy.blog.51cto.com/6190986/1544140

mysql where 和 having 的區別

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.