Sql Oracle如何修改条件以在条件失败时选择全部?
我的目标是选择所有数据,包括NULL, 如果条件失败。 如何修改条件Sql Oracle如何修改条件以在条件失败时选择全部?,sql,oracle,conditional-statements,Sql,Oracle,Conditional Statements,我的目标是选择所有数据,包括NULL, 如果条件失败。 如何修改条件 WITH DD AS ( SELECT 1 A FROM DUAL UNION SELECT NULL A FROM DUAL )SELECT * FROM DD WHERE A =2 ????? ; -- How to modify this condition? 预期结果 A --- 1 NULL 使用联合所有和非存在: WITH DD AS ( SELECT 1 A FROM DUAL UNION SE
WITH DD AS (
SELECT 1 A FROM DUAL
UNION
SELECT NULL A FROM DUAL
)SELECT * FROM DD
WHERE A =2 ????? ; -- How to modify this condition?
预期结果
A
---
1
NULL
使用
联合所有
和非存在
:
WITH DD AS (
SELECT 1 A FROM DUAL
UNION
SELECT NULL A FROM DUAL
)
SELECT * FROM DD
WHERE A =2
UNION ALL
SELECT * FROM DD
WHERE NOT EXISTS (
SELECT 1 FROM DD
WHERE A = 2
)
只有当A=2的
失败时,UNION ALL
之后的查询才会返回DD的所有行 如果只想参考“表格”一次,可以使用窗口功能:
select dd.a
from (select dd.*,
sum(case when a = 2 then 1 else 0 end) over () as cnt
from dd
) dd
where a = 2 or cnt = 0;
当“表”实际上是一个复杂的表达式,并且您希望确保它不会被多次计算时,这会很有帮助