查询计算机系和信息管理系每个系的学生人数。
  SELECT Sdept, COUNT(*)  FROM Student
    GROUP BY Sdept
    HAVING Sdept in ('计算机系', '信息管理系')
  SELECT sdept, COUNT (*)  FROM Student
    WHERE Sdept in ( '计算机系', '信息管理系')
    GROUP BY Sdept
执行后结果都一样,不知道是否写法正确,主要是看到一个课件里说第一个不正确,没有解释。请高手指点

解决方案 »

  1.   

    就你这两种写法来说,结果是一样的,having大多都用在聚合函数作为条件。
      

  2.   

    having 应该用来作聚合函数值的条件,你的语句最好用where.否则,可能会影响查询效率.
      

  3.   


    语法支持,逻辑不同。having  聚合后再搜索条件。 原数据均需要聚合
    where   先搜索条件再聚合。
      

  4.   

    这里还是用第二句吧,Having 后面一般家聚集函数,如having count(*)>5
    where 后面加一般的字段,如where dept in(XX,XX)
      

  5.   

    having 一般用来限制聚合函数的,如having(avg(xx)>3) 
    表字段请使用where