有段时间我试图运行看起来像这样的
的Oracle sql查询...
OR
(SELECT COUNT(fieldname)
FROM MYTABLE
WHERE -- SOME LOGIC HERE --
) > 0
OR
(SELECT COUNT...) = 1
AND
(SELECT COUNT)...) = 5
当我只选择括号内的代码并执行它时,它显示56为唯一结果。但是在选择所有表达式时,它在最后一行报告了一个有>
运算符的错误。
同样请注意,我实际拥有的是一个CASE
条款,OR
和AND
与计算SELECT
相关联,并与上面的数字进行比较。
感谢。
答案 0 :(得分:0)
您无法以这种方式检查查询结果。
如果要检查count
的结果是否有一些值,可以使用PLSQL块:
declare
vCount number;
begin
select count(*)
into vCount
from yourTable
where ...;
--
if vCount > 0 then
...
end if;
end;
...或像这样的简单查询:
select case
when (select count(*) from yourTable where ...) > 0
then 'More than 0'
else '0'
end
from dual
答案 1 :(得分:0)
没有上下文,给你一个确定的答案有点困难。也许-- SOME LOGIC HERE --
代表一个相关的子查询,在这种情况下你可以这样做:
select *
from another_table
where exists
(SELECT null
FROM MYTABLE
WHERE -- SOME LOGIC HERE --
)
子查询中的count(*)
是不必要的。您只是检查子查询结果集中是否存在至少一条记录,因此您不需要知道很多记录。