2013-07-17 137 views
2

我想在sql中運行兩條IF語句。中頻的是兩個不同的條件,例如:兩條sql語句

IF (@user == 'Bob') 
BEGIN 
    SELECT * FROM table Where id = 1 
END 
IF (@animal == 'Cat') 
BEGIN 
    SELECT * FROM table WHERE id = 50 
END 

我想什麼時候回來都行1,如果兩個條件都滿足只有第一個條件是正確的還是1和50。 這在第二個IF聲明失敗,是否有另一個關鍵字我需要添加?

+3

什麼是 「失敗」 是什麼意思? –

+1

你需要一個結果集嗎? –

+0

請注意批處理/命令/存儲過程可以返回多個結果集。每個select語句將對應一個結果集。 SQL寫入的方式至多有兩個單獨的結果集,它們都包含零個或一個記錄。這就是你想要的,還是你想要其他形式的結果? –

回答

2

我推薦一個單獨的語句:

SELECT 
    * 
FROM table 
WHERE 
    (@user = 'Bob' AND Id = 1) 
    OR 
    (@animal= 'Cat' AND Id = 50) 
+1

+1。 。 。我認爲這是正確的解決方案。 –

+0

ID必須是結果,而不是選擇值。 – Martin

+0

@Martin。 。 。你能詳細說明嗎?根據我對這個問題的閱讀,這簡化了邏輯並做了OP所要的。 –

2
IF (@user == 'Bob') 
BEGIN 
    SELECT * FROM table Where id = 1 
END 
ELSE IF (@animal == 'Cat') and (@user == 'Bob') 
BEGIN 
    SELECT * FROM table WHERE id = 50 
END 
0

我認爲這可能適用於你想要的。

SELECT * FROM table Where id = 1 && @user == 'Bob' 

Union 

    SELECT * FROM table WHERE id = 50 && @animal == 'Cat' && @user == 'Bob' 
1
IF (@user = 'Bob') 
BEGIN 
    IF (@animal = 'Cat') 
    BEGIN 
     SELECT * FROM table WHERE id = 50 
    END 
    ELSE 
    BEGIN 
     SELECT * FROM table Where id = 1 
    END 
END 
-1

試試這個嵌套IF函數:

SELECT * FROM table Where id = IF(@user=='Bob',1,IF(@animal=='Cat',50)); 
+0

sql server使用不同的語法 –

+0

剛剛注意到,但嘿,這就是互聯網的用途。 –