是否有必要在Oracle中使用GROUP BY?

Yog*_*esh -1 oracle

GROUP BY在Oracle中使用带有列的聚合函数时是否有必要使用?

在MySQL中,如果我不使用它工作正常,但在Oracle中,它给了我一个错误.

Ren*_*ger 8

如果您选择至少一个没有聚合函数的列,必须这样做.

所以,这将工作:

select sum(col_1), avg(col_2) from table_1;
Run Code Online (Sandbox Code Playgroud)

虽然这不会:

select sum(col_1), avg(col_2), col_3 from table_1;
Run Code Online (Sandbox Code Playgroud)


Fra*_*itt 6

GROUP BY使用聚合函数时应始终使用.不使用GROUP BY是MySQL允许的非标准SQL扩展.

RANT

恕我直言,这个扩展是脑死亡,完全危险,永远不应该使用,因为MySQL返回非聚合列的随机行的值.

END_OF_RANT

  • 是的,这是必要的 - 不仅在Oracle中,而且在所有其他RDBMS中(除了MySQL之外). (2认同)
  • 除了Frank所说的,在Oracle中不需要group by子句的唯一情况是,如果您在整个结果集中聚合 - 例如.`从some_table`中选择max(col1). (2认同)