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,则使用 IN
或 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
如果有很多情况并且此查询执行不佳,请考虑将结果加载到临时文件中 table。
这也可以用 IN
子句完成,但 EXISTS
在这种情况下更容易,并且 可能 表现更好。
我有一个问题如下。我将从 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,则使用 IN
或 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
如果有很多情况并且此查询执行不佳,请考虑将结果加载到临时文件中 table。
这也可以用 IN
子句完成,但 EXISTS
在这种情况下更容易,并且 可能 表现更好。