哈哈,好久没来发发帖了,现在闲着发一偏灌灌水
我们在数据库查询中,如果需要附加条件查询时,大多情况下都是用where语句加上条件,
其实很有一个和where是一样功能的,不晓得有多少人会选用它,这边就唠叨几点个人的使用心得
首先先来了解一下Having的作用,它是只能与select 一起使用的语句,通常是与group by一起组合使用的, 如果没有使用group by 它和where语句是一样的功能
即然是这样,那又为什么要选择它了,where不足够了不是。
好,到这边再来简单回顾一下聚合函数,例如SUM, COUNT, MAX, AVG等,我们都知道这些函数和其它函数的根本区别就是它们一般作用在多条记录远算上。
如: select count(field) from TableName group by class 这句的意思是分组统计出各个类别的总记录数, 那好,假设现在要求只查出总记录数是在>50的记
类别怎么办,
当然直接的做法是:
select count(field) from TableName where count(field) >50 group by class 。
的确,这样种也是正确无误的,来,再看一下用having的写法。
select count(field) from TableName group by class having count(field) >50
大家注意看一下就会发现 where 是在group by 之前,而having 确是group by 之后,那也就是说having是在分结事之后,再从得到的结果中查找,而where则是相反。
试想一下,如果这里面有达到万级的记如,用where的结果将会是怎样的呢。