1

我面临这样的情况,我需要一个 WHERE 子句来执行不同的操作,但我不知道如何解决。

SELECT ...
FROM ...
WHERE

      (
      CASE @test
      WHEN 0
        THEN
          pid = inPID
      WHEN 1
        THEN
          id = inPID
          @test := 0    <- syntax error
      END
    )

我尝试定义一些@test 变量(由过程参数初始化),如果使用 TEST=1 调用过程,我只需要一次 id=inPID。这个有可能 ?

4

2 回答 2

1

你能试试这个吗?不过,最好能向我们展示整个查询语句。在CASE THEN你可以使用ANDOR但在 SQL Server 中,无论如何都要测试一下。:-

SELECT ...
FROM ...
WHERE

      (
      CASE WHEN @test = 0 THEN pid = inPID
           WHEN @test= 1 THEN id = inPID AND @test:=0
      END
    )
于 2013-02-03T13:16:32.747 回答
1

尝试这样做

  @test =  @test - 1
   -- this just to be @test is 0 , if you have other value change  it be 0 

编辑:

尝试这个

  (
  CASE @test
  WHEN 0
    THEN
      pid = inPID
  WHEN 1
    THEN
      id = inPID
  WHEN 1
    THEN
      @test := 0    
  END

使用这个

  WHEN 1
THEN
  id = inPID AND  @test := 0
于 2013-02-03T13:01:52.530 回答