代码改变世界

having与where的区别

2016-03-30 10:19  铿锵玫瑰—叶  阅读(305)  评论(0编辑  收藏  举报

having子句用于对分组后的结果在进行筛选,它用于组而不是单个记录,where用于单个记录;

在having子句中可以使用统计函数,但在where子句中则不能;

having通常与group by连用。

1、where子句用来筛选from子句中指定的数据源所产生的行数据;

2、group by子句用来对经where自居筛选后的结果数据进行分组;

3、having子句用来对分组后的结果数据在进行筛选。

对于在分组之前应用的搜索条件,在where子句中指定他们更有效;在having子句中指定的搜索条件应该是那些必须在执行分组之后应用的搜索条件。因此,建议将所有在分组之前进行的搜索条件放在where子句中而不是having子句中。