用于检查值是否存在的SQL

时间:2012-02-20 12:05:05

标签: sql null exists

我有3个表格 - TableATableBTableDetail

**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

我的要求是根据

FinalValue获取TableDetail
Num 

(用户将从textBox UI中选择Num值。如果TableB有一个partial Num的记录,则使用表B的id。如果没有,则使用表A的id。 假设表A有所有Num值的记录。

例如,

If Num=200:

由于TableB中存在Num=200的记录,因此请使用TableB的相应id (3)并从TableDetail获取FinalValue,其中id = 3,即

FinalValue = 77

If Num =100:

SinceTableB没有Num=100的任何记录,请使用TableA的相应id (1)并从TableDetail获取FinalValue,其中id = 1,即

FinalValue = 99

你能不能帮我构建一个PL / SQL查询。谢谢!

2 个答案:

答案 0 :(得分:3)

使用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

答案 1 :(得分:3)

尝试以下操作,@ 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)