如何在Oracle中使用带有if条件的select语句?

8

我的需求是从一个复杂的查询中获取一个数字,并检查该数字是否等于所需数字。

如果它等于所需数字,则我必须执行另一组选择语句,

有没有办法在查询中实现这一点,而不是编写一个函数?

例如:

select case when val =2  
then select val1 from table1  
else 'false'  
from (select val from table)  

这可行吗??
2个回答

14
select case when val=2 then val1 else val end as thevalue
from table1

我假设你的意思是val和val1都来自同一张表,但当val=2时,使用val1代替它。如果实际上你有两张表,它们都只有一个记录,则

select
    case when val=2
    then (select val1 from table1)
    else 'false'
    end
from table

0

我不确定我完全理解你的需求。但我认为你可以使用联合来实现这个:

create table theValues ( theValue integer)
create table table1 ( value1 integer)
create table table2 ( value2 integer)


INSERT INTO theValues (thevalue) VALUES (2)
INSERT INTO table1 ( value1 ) VALUES (17)
INSERT INTO table2 ( value2 ) VALUES (8)


SELECT value1 from table1 WHERE EXISTS (SELECT theValue from theValues WHERE theValue != 2)
UNION ALL 
SELECT value2 from table2 WHERE EXISTS (SELECT theValue from theValues WHERE theValue  = 2)

在这种情况下,“魔数”是2。如果theValues表查询返回2,则从table2的结果中获取结果,否则从table1中获取结果。
祝好, 丹尼尔

嗨,丹尼尔,当我的情况条件得到满足时,我必须能够在数据库中运行另一个选择查询..这可能吗? - swathy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接