2012-08-30 140 views
8

我想检索条件为WHERE子句的数据。
这里是我桌上的东西看起来像:嵌套多个条件的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)并给出以下错误或:

Incorrect syntax near '>'.: SELECT * FROM testing WHERE case Location When 'Bhuj' then Age>20 When 'Mumbai' then Age>25 end

任何建议?

+1

看不出有什么理由降低了问题的质量。 Upvoted :) – hgulyan

+0

这里不需要case –

+0

@NitinGoyal我的实际查询是不同的和复杂的。我必须使用'CASE'声明。我只是在这里展示它。 – hims056

回答

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

哦。我非常微不足道的错误。正是我想要的。 – hims056

13

我觉得这是你想达到什么样的

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

检查SQLFiddle

UPDATE:

Case语句返回一个值,你不能有一个内部条件它。

+0

是的。但是我们不能使用我在例子中显示的CASE语句吗? – hims056

+0

检查我的更新。 – hgulyan

+0

我们可以在'WHERE'子句中使用'CASE'。请参阅podiluska的另一个答案。 – hims056