1. 程式人生 > >mysql中的過濾分組

mysql中的過濾分組

什麽 包括 方法 mysq 訂單 目前 png 至少 lec

本文節選自《MYSQL必知必會》

一. 過濾分組

除了能用GROUP BY分組數據外,MySQL還允許過濾分組,規定包括哪些分組,排除哪些分組。例如,可能想要列出至少有兩個訂單的所有顧客。為得出這種數據,必須基於完整的分組而不是個別的行進行過濾

我們已經看到了WHERE子句的作用,但是,在這個例子中WHERE不能完成任務,因為WHERE過濾指定的是行而不是分組。事實上,WHERE沒有分組的概念

那麽,不使用WHERE使用什麽呢?MySQL為此目的提供了另外的子句,那就是HAVING子句。HAVING非常類似於WHERE。事實上,目前為止所學過的所有類型的WHERE子句都可以用HAVING來替代。唯一的差別是WHERE過濾行,而HAVING過濾分組

二. 實例

技術分享圖片

技術分享圖片

這條select語句最後一行增加了HAVING子句,它過濾COUNT(*)>=2(兩個以上訂單)的那些分組

三. HAVING和WHERE的差別

這裏有另一種理解方法,WHERE在數據分組前進行過濾,HAVING在數據分組後進行過濾。這是一個重要的區別

mysql中的過濾分組