OracleDB:COALESCE和ORA-01427:单行子查询返回多个行

问题描述:

我使用COALESCE函数来避免ORA-01427和pick up first non-null valueOracleDB:COALESCE和ORA-01427:单行子查询返回多个行

COALESCE((
     SELECT c.SCounts 
     FROM counts c 
     WHERE c.ID = 10000 
     ), 0) 

当我评论此代码一切正常。

+2

此表上的主键(或唯一键)是什么?我敢打赌,counts.id专栏不是唯一的,其中存在你的问题。另外,这个代码在哪里被使用?我假设它在外部查询的选择列表中? (即'select coalesce(( ...) – Boneist

+0

谢谢,我已经发现问题了。 '合并((my_subselect),0)'。子选择返回多于一个值 –

+0

它将为一行返回一个值,但是如果从没有WHERE的表中选择,则会得到很多行。无论如何,如果这是真正的问题,请您在下面接受我的回答吗? – Galcoholic

我想上面的COALESCE被嵌入到一个SELECT是这样的:

SELECT 
COALESCE((
     SELECT c.SCounts 
     FROM counts c 
     WHERE c.ID = 10000 
     ), 0) 
FROM counts 

如果这是真的,那么问题可能是这个选择将返回尽可能多的行,表COUNTS了。