2012-12-10 74 views
4

我正在嘗試創建一個查詢,它只會在符合某些條件的地方添加AND子句。SQL-IF陳述圍繞AND

這就是我所追求的:

SELECT DISTINCT 
    id 
    name 
    active 
FROM team 
WHERE id = 1234 
IF team.active = 'y' 
    AND team.id IN 
    { 
     query 
    } 
ELSEIF team.active = 'n' 
    AND team.id IN 
    { 
     query 
    } 

但我不知道如何在SQL做到這一點。有什麼建議麼?

回答

5
SELECT DISTINCT 
    id 
    name 
    active 
    FROM team 
WHERE id = 1234 
    AND (team.active = 'y' 
    AND team.id IN 
     { 
      query 
     }) 
    OR 
    (team.active = 'n' 
    AND team.id IN 
     { 
     query 
     }) 

您使用AND和OR連接符來創建邏輯。

+0

謝謝,這個工作。標記爲答案,因爲你在一分鐘內擊敗了另一個人。 – Alias

3

您可以使用布爾邏輯,像這樣

SELECT ... 
FROM team 
WHERE id = 1234 
    AND (
     (team.active = 'y' AND team.id IN query) 
     OR 
     (team.active = 'n' AND team.id IN query) 
    ) 

我錯過了在這兩個分支的區別?

+0

我認爲'查詢'是爲了不同的每個分支。這是不同之處。 –

-1

可以使用解碼語句實現的結果

SELECT DISTINCT 
    id 
    name 
    active 
FROM team 
WHERE id = 1234 and 
team.id in (
decode (team.active,'y',(query),'n',(query)) 

你也可以使用情況statment

+0

這是一個SQL Server問題,而不是Oracle –