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 

解决方案 »

  1.   

    having 一定要group by吗?
      

  2.   

    to 飞扬
    不好意思,你可能理解错了我的问题,我看到过无group by 的有having的select +子查询语句
    所以我很奇怪
    但看了联机帮助 ,只说了having未必一定要group by
      

  3.   

    HAVING
    指定组或聚合的搜索条件。HAVING 只能与 SELECT 语句一起使用。通常在 GROUP BY 子句中使用它。如果不使用 GROUP BY 子句,HAVING 的行为与 WHERE 子句一样。有关更多信息,请参见 SELECT。 
      

  4.   

    HAVING 子句
    指定组或聚合的搜索条件。HAVING 通常与 GROUP BY 子句一起使用。如果不使用 GROUP BY 子句,HAVING 的行为与 WHERE 子句一样。语法
    [HAVING <search_condition>]参数
    <search_condition>指定组或聚合应满足的搜索条件。当 HAVING 与 GROUP BY ALL 一起使用时,HAVING 子句替代 ALL。有关更多信息,请参见搜索条件。在 HAVING 子句中不能使用 text、image 和 ntext 数据类型。
      

  5.   

    having 只能与 group by一起使用,having 跟 group by 就像是 select 与 where 一样having 对分组后的结果进行筛选
    where  对select的结果进行筛选