我正在通过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?
答案 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)