none
请教,关于having子句的基础问题 RRS feed

  • Pergunta

  •       请问,having子句是否必须用在聚合函数与group by子句中?也就是说,having子句是否必须与聚合函数或group by子句一起使用???它可以直接在select语句中使用吗??
    ice
    segunda-feira, 9 de fevereiro de 2009 09:15

Respostas

  •  对, 必须在Group by中,和聚组函数一起使用, 不能直接使用,虽然作用和where一样。

    Where的作用是在对查询结果进行 Group by 之前,过滤不符合条件的数据,条件中不能包含聚组函数;
    Having的作用是Group by后过滤不符合条件(此条件中经常包含聚组函数)的数据。
    having 子句被限制子已经在SELECT语句中定义的列和聚合表达式上。通常,你需要通过在HAVING子句中重复聚合函数表达式来引用聚合值,就如你在SELECT语句中做的那样。例如: SELECT A COUNT(B) FROM TABLE GROUP BY A HAVING COUNT(B)>1000

    • Marcado como Resposta zhi715 terça-feira, 10 de fevereiro de 2009 00:30
    segunda-feira, 9 de fevereiro de 2009 17:45

Todas as Respostas

  •  having是与group by配合使用的。在没有group by的子句中,就要用where了。
    郭勇成
    segunda-feira, 9 de fevereiro de 2009 09:51
  •  是的. Where 解决不了这样的问题,所以 Having 就诞生了,这就是 Having 的来历。
    segunda-feira, 9 de fevereiro de 2009 10:10
  •  对, 必须在Group by中,和聚组函数一起使用, 不能直接使用,虽然作用和where一样。

    Where的作用是在对查询结果进行 Group by 之前,过滤不符合条件的数据,条件中不能包含聚组函数;
    Having的作用是Group by后过滤不符合条件(此条件中经常包含聚组函数)的数据。
    having 子句被限制子已经在SELECT语句中定义的列和聚合表达式上。通常,你需要通过在HAVING子句中重复聚合函数表达式来引用聚合值,就如你在SELECT语句中做的那样。例如: SELECT A COUNT(B) FROM TABLE GROUP BY A HAVING COUNT(B)>1000

    • Marcado como Resposta zhi715 terça-feira, 10 de fevereiro de 2009 00:30
    segunda-feira, 9 de fevereiro de 2009 17:45
  •  语法的规定, WHERE 只适用于 GROUP BY 之后, HAVING 只适用于 GROUP BY 之后
    所以HAVING必须与GROUP BY一齐使用, 如果没有GROUP BY , 你应该用 WHERE
    segunda-feira, 9 de fevereiro de 2009 21:01
  • 感谢四楼的详细解答.
    ice
    terça-feira, 10 de fevereiro de 2009 00:32