文章利用兩個簡單的實(shí)例對group by之后的分組加限制條件和查詢數(shù)據(jù)表中某字段重復(fù)出現(xiàn)的次數(shù),并按照次數(shù)排序講述了havaing和group by 語句用法.
利用Mysql中的 的聚合函數(shù) count(*) 可以實(shí)現(xiàn)這個功能,例如需要查詢data表中name出現(xiàn)次數(shù)最多的記錄,可以先按照group by name分組,用count算出分組里的條數(shù),再按照count排序,代碼如下:
select name,count(*) from data group by name order by count(*) DESC limit 1
不加limit限制將返回按照name重復(fù)次數(shù)排列的數(shù)據(jù),在使用聚合函數(shù)之前,我們可以通過where對查詢加限制條件,那么如果在group by之后我們要對分組里面的數(shù)據(jù)再加限制條件怎么辦呢?答案是having.
HAVING子句可以讓我們篩選成組后的各組數(shù)據(jù).
WHERE子句在聚合前先篩選記錄,也就是說作用在GROUP BY 子句和HAVING子句前,而 HAVING子句在聚合后對組記錄進(jìn)行篩選.
having子句出現(xiàn)的數(shù)據(jù)必須在group by 之后,order by 之后,例如在上一篇中對name按照出現(xiàn)次數(shù)排序之后,我們還想只查出名字里面含有l(wèi)in的數(shù)據(jù),可以這樣寫,代碼如下 :
- select name ,count(*) from data group by name having name like '%lin%' order by couny(*) DESC --Vevb.com
新聞熱點(diǎn)
疑難解答
圖片精選