4

我正在尝试创建一个仅在满足某些条件时添加 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 中执行此操作。有什么建议么?

4

3 回答 3

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 连接词来创建逻辑。

于 2012-12-10T13:06:24.793 回答
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)
    )

我错过了两个分支的区别吗?

于 2012-12-10T13:07:17.147 回答
-1

您可以使用 decode 语句来实现结果

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

你也可以使用 case 语句

于 2012-12-10T13:13:41.680 回答