oracle之group by,having和where的區別
我個人的理解如下:
group by,having已經where這三個子句的執行順序是有區別的:
先執行where子句,對符合條件的資料進行刪選
然後執行group by子句,對刪選出來的結果集進行分組
最後執行having子句,對分組後的結果集再次進行篩選。
這樣就很好理解為什麼帶有聚合函式(sum,min,max,avg,count)的查詢條件只能使用在having子句,而不能在where子句中,因為它違背了執行順序。
必須在分組以後,計算出結果集,然後才能對相應的結果集進行進一步的篩選。
在oracle中,group by 有一個原則,就是 select 後面的所有列中,沒有使用聚合函式的列,必須出現在 group by 後面。
但是在mysql中,是沒有這樣的限制的。
group by,having已經where這三個子句的執行順序是有區別的:
先執行where子句,對符合條件的資料進行刪選
然後執行group by子句,對刪選出來的結果集進行分組
最後執行having子句,對分組後的結果集再次進行篩選。
這樣就很好理解為什麼帶有聚合函式(sum,min,max,avg,count)的查詢條件只能使用在having子句,而不能在where子句中,因為它違背了執行順序。
必須在分組以後,計算出結果集,然後才能對相應的結果集進行進一步的篩選。
在oracle中,group by 有一個原則,就是 select 後面的所有列中,沒有使用聚合函式的列,必須出現在 group by 後面。
但是在mysql中,是沒有這樣的限制的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28497416/viewspace-2128716/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL之Where和Having的區別MySql
- where和having的區別小結
- SQL 中having 和where的區別SQL
- mysql的having和where有什麼區別MySql
- SQL中Having與Where的區別SQL
- SQL中 where 子句和having子句中的區別SQL
- having和where
- 資料庫中where與having的區別資料庫
- oracle中distinct和group by的區別Oracle
- sql中的group by 和 having 用法解析SQL
- SQL中where和on的區別SQL
- DISTINCT和GROUP BY的區別
- MyBatis中的<where>標籤和where子句的區別MyBatis
- SQL分組中WHERE和HAVING的異同SQL
- 深入Oracle的left join中on和where的區別詳解Oracle
- 【SQL】Oracle SQL join on語句and和where使用區別SQLOracle
- oracle group by中cube和rollup字句的使用方法及區別Oracle
- group by,having查詢 ”每**“的查詢
- Mysql-left join on後接and,和where的區別MySql
- 深入淺出SQL教程之Group by和Having(轉貼)SQL
- truncate和不帶where子句的delete, 以及drop區別delete
- whereRaw 與 where (\DB::raw ()) 的區別
- SQL join中on與where區別SQL
- Oracle - @和@@、&與&& 的區別Oracle
- MySQL和Oracle的區別MySqlOracle
- Oracle和MySQL的區別OracleMySql
- left join,right join,inner join的條件on和where的區別
- LINQ系列:LINQ to SQL Group by/Having分組SQL
- Oracle User 和 Schema 的區別Oracle
- Oracle Purge和drop的區別Oracle
- oracle中in和exists的區別Oracle
- ClickHouse原始碼筆記4:FilterBlockInputStream, 探尋where,having的實現原始碼筆記FilterBloC
- Oracle與OpenJDK之間的區別OracleJDK
- Oracle的redo 和undo的區別Oracle
- SQL JOIN 中 on 與 where 有何區別SQL
- 聚合函式及分組與過濾(GROUP BY … HAVING)函式
- ORACLE_BASE和ORACLE_HOME的區別Oracle
- Oracle DBA 和Oracle EBS DBA 的最大區別Oracle