2015-03-03 64 views
-1

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

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

+1

请编辑您的问题,包括你关心的查询。谢谢。 – 2015-03-03 12:14:36

回答

6

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

RANT

恕我直言,这种扩展是脑死亡,直接危险的,因为MySQL的随机一行非聚集列返回值不应该使用的。

END_OF_RANT

+0

我在问关于甲骨文...我知道它的逻辑错误。我不知道甲骨文。它会给甲骨文带来错误吗? – Yogesh 2015-03-03 12:18:26

+2

是的,这是必要的 - 不仅在Oracle中,而且在其他所有RDBMS中(除了MySQL)。 – 2015-03-03 12:19:08

+2

除了Frank所说的之外,在Oracle中不需要group by子句的唯一情况是,如果您要汇总整个结果集 - 例如。 '从some_table'中选择max(col1)。 – Boneist 2015-03-03 12:28:57

8

如果你没有聚合函数选择至少一列这是必要的。

所以,这将工作:

select sum(col_1), avg(col_2) from table_1; 

,而这不会:

select sum(col_1), avg(col_2), col_3 from table_1;