SQL检查值是否存在
我有3个表-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
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。