我的需求是从一个复杂的查询中获取一个数字,并检查该数字是否等于所需数字。
如果它等于所需数字,则我必须执行另一组选择语句,
有没有办法在查询中实现这一点,而不是编写一个函数?
例如:
select case when val =2
then select val1 from table1
else 'false'
from (select val from table)
这可行吗??
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
我不确定我完全理解你的需求。但我认为你可以使用联合来实现这个:
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)