代码之家  ›  专栏  ›  技术社区  ›  Himanshu THE ONLY ONE

具有嵌套多个条件的WHERE子句

  •  13
  • Himanshu THE ONLY ONE  · 技术社区  · 12 年前

    我想检索中有条件的数据 WHERE 条款
    这是我的桌子,看起来像:

    Name   Location    Age
    ----------------------
    AAA     Bhuj       24
    BBB     Mumbai     22
    CCC     Bhuj       18
    DDD     Bhuj       27
    EEE     Mumbai     26
    

    我的状况 其中 条款是:
    if location = 'Bhuj' then Age>20 else if location = 'Mumbai' then Age>25

    我正在尝试使用此代码来实现这一点:

    SELECT * FROM testing
    WHERE 
    CASE Location WHEN 'Bhuj' THEN Age>20
                  WHEN 'Mumbai' THEN Age>25
    END;
    

    此代码适用于MySQL( see this SQLFiddle )但不适用于SQL Server( see this SQLFiddle )并给出以下错误:

    “>”附近的语法不正确。:从测试中选择*WHERE case Location When'Bhuj'then Age>20当“孟买”时代>25结束

    有什么建议吗?

    2 回复  |  直到 12 年前
        1
  •  21
  •   hgulyan    9 年前

    我认为这就是你想要实现的目标

       SELECT * 
       FROM testing
       WHERE (Location = 'Bhuj' AND Age>20) 
            OR (Location = 'Mumbai' AND Age>25)
    

    检查 SQLFiddle

    更新:

    Case语句返回一个值,但不能在其中包含条件。

        2
  •  9
  •   podiluska    12 年前
    SELECT * FROM testing 
    WHERE  
    Age > case Location When 'Bhuj' then 20 
                  When 'Mumbai' then 25 
                  end