咱們在寫sql語句的時候,常常會使用where語句,不多會用到having,其實在mysql中having子句也是設定條件的語句與where有類似之處但也有區別。having子句在查詢過程當中慢於聚合語句(sum,min,max,avg,count).而where子句在查詢過程當中則快於聚合語句(sum,min,max,avg,count)。
簡單說來:
where子句:
select sum(num) as rmb from order where id>10
//先查詢出id大於10的記錄才能進行聚合語句
having子句:
select reportsto as manager, count(*) as reports from employees
group by reportsto having count(*) > 4
以test庫爲例.having條件表達示爲聚合語句。確定的說having子句查詢過程慢於聚合語句。
再換句說話說把上面的having換成where則會出錯。統計分組數據時用到聚合語句。
對分組數據再次判斷時要用having。若是不用這些關係就不存在使用having。直接使用where就好了。
having就是來彌補where在分組數據判斷時的不足。由於where要快於聚合語句。