我想运行以下查询。运行时将提供@city
值
Select * from Emp
where empno in (
if( @city = 'Bangalore')
Begin
Select Empno from Emp
where EmpCity = @city
End
Else
Begin
Select empno from Emp
End
)
请提供替代方案帮助我
答案 0 :(得分:1)
IF
是控制流语句。您不能将语句放在其他语句中。
人们在提出IF
时正常寻找的是CASE
,这是一个表达式。但是,在这种情况下,更简单的查询似乎可行:
Select * from Emp
where
(EmpCity = @city or @city != 'Bangalore') and
(EmpSalary = @salary or @salary != 20000) and
(Designation = @designation or @designation != 'PM')
我不明白为什么你有嵌套选择
答案 1 :(得分:1)
假设您的搜索基于EmpId
- @EmpId
和City
- @city
Select *
from
Emp
where
(@city = '' or EmpCity = @city) and
(@EmpId = '' or EmpId = @EmpId)