执行SQL中只存在一个

时间:2013-07-19 10:00:42

标签: sql oracle

我正在通过Oracle DB创建iReport报告。我必须根据这样的条件选择一些值:

AND EXISTS (SELECT 1 FROM TABLE_1 WHERE x = y)  
OR EXISTS (SELECT 1 FROM TABLE_2 WHERE z = y) 

是否可以仅在第一个EXISTS为假时执行第二个EXISTS?

3 个答案:

答案 0 :(得分:7)

尝试在括号中使用您的条件:

AND (
        EXISTS (SELECT 1 FROM TABLE_1 WHERE x = y)  
     OR EXISTS (SELECT 1 FROM TABLE_2 WHERE z = y)
    )

答案 1 :(得分:2)

使用CASE

where 
 ...
 AND 1 = case
          when EXISTS (SELECT 1 FROM TABLE_1 WHERE x = y)  then 1
          when EXISTS (SELECT 1 FROM TABLE_2 WHERE z = y)  then 1
          else 0
         end

答案 2 :(得分:0)

AND (case when (SELECT count(*) FROM TABLE_1 WHERE x = y) > 0 then true
when (SELECT count(*) FROM TABLE_2 WHERE z = y) > 0 then true 
else false end)