SQL SERVER Select 语句 - 如何 select IF 语句的值之一

SQL SERVER Select statement - How do I select one of the values for IF statement

我有一个问题如下。我将从 select 中获得多个 MethodID。我是否使用 while 循环或其他方式来读取从 select 检索到的每个 MethodID 以破坏 IF ELSE? (@PID 将是一个输入参数)我该怎么做?

SELECT DISTINCT MethodID FROM Table
WHERE PID = @PID

IF @MethodID = 10
   EXEC sp1
ELSE IF @MethodID = 20
   EXEC sp2

编写一个遍历游标结果集的循环。这是游标的一个很好的用例,因为您需要在每次迭代中执行副作用(过程调用)。无论如何你需要一个循环,这里使用游标很方便。

如果查询 returns 一组 MethodID 并且该集合可能包含多个 1,如果您只需要知道该集合是否包含 10,则使用 INEXISTS 子句:

IF (EXISTS (SELECT 1 FROM Table WHERE PID = @PID AND MethodID = 10))
    EXEC sp1

IF (EXISTS (SELECT 1 FROM Table WHERE PID = @PID AND MethodID = 20))
    EXEC sp2

如果有很多情况并且此查询执行不佳,请考虑将结果加载到临时文件中 table。

这也可以用 IN 子句完成,但 EXISTS 在这种情况下更容易,并且 可能 表现更好。