知道sql語句中where與having的區(qū)別
發(fā)表時(shí)間:2023-09-03 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]HAVING是先分組再篩選記錄,WHERE在聚合前先篩選記錄.也就是說作用在GROUP BY 子句和HAVING子句前;而 HAVING子句在聚合后對組記錄進(jìn)行篩選。作用的對象不同。WHERE 子句作用于表和視圖,HAVING 子句作用于組。WHERE 在分組和聚集計(jì)算之前選取輸入行(因此,它控制...
HAVING是先分組再篩選記錄,WHERE在聚合前先篩選記錄.也就是說作用在GROUP BY 子句和HAVING子句前;而 HAVING子句在聚合后對組記錄進(jìn)行篩選。
作用的對象不同。WHERE 子句作用于表和視圖,HAVING 子句作用于組。WHERE 在分組和聚集計(jì)算之前選取輸入行(因此,它控制哪些行進(jìn)入聚集計(jì)算), 而 HAVING 在分組和聚集之后選取分組的行。因此,WHERE 子句不能包含聚集函數(shù); 因?yàn)樵噲D用聚集函數(shù)判斷那些行輸入給聚集運(yùn)算是沒有意義的。 相反,HAVING 子句總是包含聚集函數(shù)。(嚴(yán)格說來,你可以寫不使用聚集的 HAVING 子句, 但這樣做只是白費(fèi)勁。同樣的條件可以更有效地用于 WHERE 階段。)比如說:
select * from tablename where id > 1; 和
select * from tablename having id > 1
這兩者是查詢結(jié)果是沒有區(qū)別的。不建議使用having
總結(jié)就兩句話:
WHERE語句在GROUPBY語句之前;SQL會(huì)在分組之前計(jì)算WHERE語句。
HAVING語句在GROUPBY語句之后;SQL會(huì)在分組之后計(jì)算HAVING語句。
以上就是了解sql語句中where和having的區(qū)別 的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
學(xué)習(xí)教程快速掌握從入門到精通的SQL知識(shí)。