2013-02-03 83 views
1

我面臨的情況是,我需要一個WHERE子句來採取不同的行爲,我不知道如何解決。mysql,選擇性WHERE子句

SELECT ... 
FROM ... 
WHERE 

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

我試圖定義一些變量@test(這是由程序參數初始化),並且如果該過程被調用TEST = 1,I需要ID = inPID一次。這個有可能 ?

回答

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 
+0

但,問題是,我可以寫THEN和END之間的1號線,但更多的行會給我的錯誤。我試圖重新融入BEGIN END,但沒有成功。我使用dbForge Studio ... – user1973900

+0

編輯我的答案 –

+0

nope,不工作,實際上沒有評估。我想修改是在SELECT ... – user1973900

1

你可以試試這個嗎?儘管如此,最好能向我們展示整個查詢語句。在CASE THEN你可以使用ANDOR在SQL Server不過,測試了這一點anyway.:-

SELECT ... 
FROM ... 
WHERE 

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

@ user1973900之後進行的嗎?請評論並很高興聽到它如何。 – bonCodigo

+0

謝謝你的回答(兩者),但WHEN @ test = 1 THEN id = inPID和@test:= 0正在ALWAYS @ test = 0(當然這是我第一次需要),所以不起作用 – user1973900

+0

請澄清多一點。當我的初始值被評估爲'1'時,我感覺你想要將'@ test'重置爲'0'。高興地幫助你,如果你能解釋:) – bonCodigo