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

时间:2012-08-30 07:42:51

标签: sql sql-server case where-clause multiple-conditions

我想检索条件为WHERE条款的数据 这是我的表格看起来像:

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

我在WHERE条款中的条件是:
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)并出现以下错误:

  

'>'附近的语法不正确:SELECT * FROM测试WHERE case位置当'Bhuj'然后年龄> 20当'Mumbai'然后年龄> 25结束

有什么建议吗?

2 个答案:

答案 0 :(得分:14)

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

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

检查SQLFiddle

更新:

Case语句返回一个值,你不能在里面有条件。

答案 1 :(得分:7)

SELECT * FROM testing 
WHERE  
Age > case Location When 'Bhuj' then 20 
              When 'Mumbai' then 25 
              end