我有以下示例:甲骨文:使用选择内选择
Select MAX(1) as foo, count(*) as bar From dual
这是通过返回1作为foo和1,酒吧正确执行。
现在我将创建一个仅返回foo的内部选择,保留上一个示例中的条。
Select (Select Max(1) as foo From dual), count(*) as bar From dual
后者例子将提供以下错误:
ORA-00937: not a single-group group function
这可以通过提供一个(冗余?)组通过容易地固定:
Select (Select Max(1) From dual) as foo, count(*) as bar From dual Group By 1
我的问题是以下:因为我们肯定会在内部select中返回一行(通过提供MAX聚合函数),为什么在声明结束时声明一个组?另外,这个小组是否会对声明的表现产生影响?
正如我提到的Stawros,我无法找出原因,Oracle不知道被定义内选择将返回一个值。 – istovatis
这只是不那么聪明:) 对于数据库的子查询被解释为另一个表(或更多的实际上是一个视图),并按照这种方式处理。 – Mihail
结果集就是结果集。根据定义,它可以有多个值。 – Mihail