oracle 如果select返回0,则执行另一个select

rsaldnfx  于 2022-11-03  发布在  Oracle
关注(0)|答案(1)|浏览(184)

我有一个从两个不同连接中选择数据的查询

select count (*) from table1
where condition1 = 'answer1'
and time >= sysdate - interval '5' minute

UNION ALL

select count (*) from table2
where condition2 = 'answer2'
AND NOT EXISTS (

select * from table1
where condition = 'answer'
and time >= sysdate - interval '5' minute

);

我的问题是,即使table1中没有数据,table2select也根本不起作用。
有谁能帮我把它弄出来,或者知道另一种写查询的方法吗?
其思想是,如果选择计数返回0,则从不同的表中执行另一次选择
我试着用谷歌搜索,甚至潜伏在这里,但仍然没有得到任何答案

nkkqxpd9

nkkqxpd91#

如果table2NOT EXISTS子句中没有以某种方式连接到table1,则它将永远不会返回数据,因为只要查询返回的内容就存在。
如果您没有将table2链接到table1的方法,可以将其用作not exists中的连接,您可以执行以下操作

select count (*) from table 1
where condition = answer
and time >= sysdate - interval '5' minute

UNION ALL

select count (*) from table2
where condition2 = answer2
AND (
  select count(*) from table 1
  where condition = answer
  and time >= sysdate - interval '5' minute
) = 0;

相关问题