SQL检查值是否存在

SQL检查值是否存在,sql,null,exists,Sql,Null,Exists,我有3个表-TableA、TableB和TableDetail **Table Detail** id FinalValue 1 99 2 88 3 77 **Table A** id InitValue Num 1 10 100 2 30 200 **Table B** id InitValue Num 3 20 200 我的要求是根据 Num (Numva

我有3个表-
TableA
TableB
TableDetail

**Table Detail**
id  FinalValue
1       99
2       88
3       77


**Table A**
id   InitValue   Num
1     10         100
2     30         200


**Table B**
id   InitValue  Num
3    20          200
我的要求是根据

Num 
Num
value将由用户从文本框UI中选择)。如果TableB有部分Num的记录,则使用表B的id。如果没有,则使用表a的id。 假设表A中有所有Num值的记录

比如说,

If Num=200:
由于表格B中存在一条记录,记录的编号为
Num=200
,因此使用表格B对应的
id(3)
,并从id=3的表格细节中获取最终值,即

FinalValue = 77

If Num =100:
由于TableB没有
Num=100
的任何记录,请使用TableA对应的
id(1)
,并从id=1的TableDetail中获取最终值,即

FinalValue = 99

你能帮我为同样的问题构造一个PL/SQL查询吗?谢谢

用UI中的值替换200,您可以这样做:

declare @id int

select @id = id from TableB where Num = 200

if(@id is null)
begin
   select @id = id from TableA where id = 200
end

select FinalValue from Detail where id = @id

请尝试以下操作,@num由用户传递

select FinalValue
from TableDetail
where id in
(select isnull(T2.id,T1.id)
from TableA T1 on T.id = T1.id and T1.Num = @num
left join TableB T2 on T.id = T2.id and T2.Num = @num)

这可以用普通sql解决吗?@Mosty-是的,我更喜欢用普通sql。