在sql语句中where与having的区别

来源:互联网 发布:linux nginx 配置域名 编辑:程序博客网 时间:2024/05/06 03:51
having一般跟在group   by   之后,执行记录组选择的一部分来工作的。 

where   则是执行所有数据来工作的。

having必须group   by 

having可以用聚合函数,如having   sum(qty)> 1000 

HAVING   子句与   WHERE   子句类似,但只应用于作为一个整体的组(即应用于在结果集中表示组的行),而   WHERE   子句应用于个别的行。查询可同时包含   WHERE   子句和   HAVING   子句。在这种情况下:  

首先将   WHERE   子句应用于表中的个别行或关系图网格中的表结构化对象。只对符合   WHERE   子句条件的行进行分组。

然后将   HAVING   子句应用于由分组生成的结果集中的行。只有符合   HAVING   子句条件的组才出现在查询输出中。只能将   HAVING   子句应用于也出现在   GROUP   BY   子句或聚合函数中的列。   

例如,假设联接   titles   和   publishers   表以创建一个查询,显示一组出版商出版的书的平均价格。只想看到一组特定出版商(可能只是加利福尼亚州   (CA)   的出版商)出版的书的平均价格。甚至只想看到超过   10.00   美元的平均价格。