【发布时间】:2013-11-05 21:29:44
【问题描述】:
当我在 Oracle 10g 中运行它时,我得到了错误“ORA-01427:单行子查询返回多于一行”,正如我所料:
WITH a as (select 1 somenumber from dual),
b as ( select 'foo' foo from dual
union all select 'goo' from dual)
SELECT (select 0.5 from b)
FROM a
但是,当我运行以下语句时,我没有收到错误,而是返回“2.5”。
WITH a as (select 1 somenumber from dual),
b as ( select 'foo' foo from dual
union all select 'goo' from dual)
SELECT (select sum(a.somenumber) + 0.5 from b)
FROM a
这个标准是否对子查询求和,然后添加 0.5,就好像它是在运行子查询后完成的一样?还是这是一些 Oracle 功能/错误?
编辑:对于那些好奇的人,实际代码看起来更像这样:
WITH a as (select 1 somenumber from dual),
b as ( select 'foo' foo from dual
union all select 'goo' from dual)
SELECT (select sum(a.somenumber) + customfunction(a.somenumber) from b)
FROM a
【问题讨论】:
-
这实际上是 SQL 功能 :) 在任何 SQL 数据库上您都会得到完全相同的结果。
-
正如 kambajin 所说:一个 feture 否则它就是一个错误。不要依赖这个!
-
@Linger:就像我说的,我希望它会返回一个错误
-
@Kombajn:谢谢!我不知道您可以在执行此操作时添加常量。
标签: sql oracle oracle10g standards