0

我想运行以下查询。@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
    )

请通过提供替代方案来帮助我

4

2 回答 2

1

IF是一个控制流语句。您不能将语句放在其他语句中。

人们想出的时候通常会寻找的IFCASE,这是一种表达方式。但是,在这种情况下,一个更简单的查询似乎是可行的:

Select * from Emp
where
    (EmpCity = @city or @city != 'Bangalore') and
    (EmpSalary = @salary or @salary != 20000) and
    (Designation = @designation or @designation != 'PM')

我不明白为什么你有嵌套选择

于 2012-09-25T07:01:39.503 回答
1

假设您的搜索基于EmpId-@EmpId并且City-@city

Select * 
from 
  Emp 
where 
 (@city  = '' or EmpCity = @city) and
 (@EmpId = '' or EmpId = @EmpId)
于 2012-09-25T07:13:38.480 回答