2012-12-10 61 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 –