group by :分组
第一个问题:
在什么情况使用group by :
当select 检索列表中出现使用聚合函数的字段,同时又出现没有使用聚合函数的字段,此时就要使用group by 分组,原则没有使用聚合函数的字段,都应放在group by 分组。
具体语法是这样的:
select 字段1,聚合函数(字段2) from table_name where condition group by 字段1 第二个问题:having :也是条件子句,即后面也接条件表达式
1、having 要放在group by 后使用
2、有having 就一定要有group by 子句
3、having与where 不同的是:having后面可以直接使用聚合函数,而where后不可以使用。
具体语法:select 字段1,聚合函数(字段2) from table_name where condition1 group by 字段1
having condition2
第一个问题:
在什么情况使用group by :
当select 检索列表中出现使用聚合函数的字段,同时又出现没有使用聚合函数的字段,此时就要使用group by 分组,原则没有使用聚合函数的字段,都应放在group by 分组。
具体语法是这样的:
select 字段1,聚合函数(字段2) from table_name where condition group by 字段1 第二个问题:having :也是条件子句,即后面也接条件表达式
1、having 要放在group by 后使用
2、有having 就一定要有group by 子句
3、having与where 不同的是:having后面可以直接使用聚合函数,而where后不可以使用。
具体语法:select 字段1,聚合函数(字段2) from table_name where condition1 group by 字段1
having condition2
不好意思,你可能理解错了我的问题,我看到过无group by 的有having的select +子查询语句
所以我很奇怪
但看了联机帮助 ,只说了having未必一定要group by
指定组或聚合的搜索条件。HAVING 只能与 SELECT 语句一起使用。通常在 GROUP BY 子句中使用它。如果不使用 GROUP BY 子句,HAVING 的行为与 WHERE 子句一样。有关更多信息,请参见 SELECT。
指定组或聚合的搜索条件。HAVING 通常与 GROUP BY 子句一起使用。如果不使用 GROUP BY 子句,HAVING 的行为与 WHERE 子句一样。语法
[HAVING <search_condition>]参数
<search_condition>指定组或聚合应满足的搜索条件。当 HAVING 与 GROUP BY ALL 一起使用时,HAVING 子句替代 ALL。有关更多信息,请参见搜索条件。在 HAVING 子句中不能使用 text、image 和 ntext 数据类型。
where 对select的结果进行筛选