"HAVING ... GROUP BY"和"GROUP BY ... HAVING"之间的区别

use*_*279 6 sql oracle syntax group-by having

我有两个列的表MYTABLE:AB.

我有以下几段代码:

SELECT MYTABLE.A FROM MYTABLE 
    HAVING SUM(MYTABLE.B) > 100
    GROUP BY MYTABLE.A
Run Code Online (Sandbox Code Playgroud)

SELECT MYTABLE.A FROM MYTABLE 
    GROUP BY MYTABLE.A
    HAVING SUM(MYTABLE.B) > 100
Run Code Online (Sandbox Code Playgroud)

它是一样的吗?这两个代码是否有可能返回不同的结果集?

先感谢您

Dav*_*dge 9

据记载,没有区别.人们习惯于在GROUP BY之后看到HAVING.

http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10002.htm#SQLRF20040

在where_clause和hierarchical_query_clause之后指定GROUP BY和HAVING.如果同时指定GROUP BY和HAVING,则它们可以按任意顺序出现.

http://sqlfiddle.com/#!4/66e33/1


Mig*_*res 0

HAVINGa 之前不能有 a GROUP BY, theHAVING类似于“ WHERE”,但用于GROUP BY条件。