SQL SERVER Select语句 - 如何为IF语句选择其中一个值

时间:2015-01-13 18:47:42

标签: sql sql-server-2008

我有一个查询如下。我会从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

2 个答案:

答案 0 :(得分:1)

如果查询返回一组MethodID并且该集合可能包含多于1,那么如果您需要知道的是该集合是否包含10,那么请使用IN或{{1子句:

EXISTS

如果有很多情况并且此查询效果不佳,请考虑将结果加载到临时表中。

这也可以使用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 条款完成,但IN在这种情况下更容易,可能表现更好。

答案 1 :(得分:0)

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