|
楼主 |
发表于 2013-11-5 12:06
|
显示全部楼层
本帖最后由 335081548 于 2013-11-5 15:23 编辑
WHERE、GROUP BY 和 HAVING 子句的正确顺序对编写高效的查询代码会有所帮助:
WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行。
 GROUP BY 子句用来分组 WHERE 子句的输出。
 HAVING 子句用来从分组的结果中筛选行。
HAVING子句必须跟在GROUP BY(分组)子句之后,但ORDER BY(排序)子句之前。
HAVING子句与Where子句有如下相似之处:
1.两者都是从结果表中筛选数据
2.两者都使用条件筛选。
3.两者,数据中的Null不满足任何条件。Is Null例外。
HAVING子句与Where子句有如下不同之处:
1.Where子句只能在进行任何处理之前从原始数据表中删除、筛选。
2.HAVING子句可以在进行绝大部分处理后删除、筛选已分组和已汇总的数据。
3.Where子句不能在它设置的条件中使用聚合函数。
4.HAVING子句可以在经的条件中使用聚合函数。
SQL语句在包含HAVING的语法如下:
- Select 列字段1,列字段2,列字段3,..... From[工作表名$] Where 条件 GROUP BY 列字段1,列字段2 HAVING 条件 ORDER BY 列字段1,列字段2
复制代码 实例进行演示:
- SELECT 姓名, SUM(产品数) as 产品总数 From [Sheet1$] GROUP BY 姓名 HAVING SUM(产品数)>100
复制代码 统计产品数小于100的不显示(提取大于100的数据)。按姓名分类汇总产器数 数据大于100的。
简单理解:
HAVING的作用是GROUP BY。(设置分组的条件)。针对于分组。
WHERE的作用是SELECT的列字段的条件。(字段条件)。针对于原数据行。
|
|