I want to retrieve data with conditions in WHERE
clause.
Here is my table something look like:
我想检索WHERE子句中带有条件的数据。这是我的桌子:
Name Location Age
----------------------
AAA Bhuj 24
BBB Mumbai 22
CCC Bhuj 18
DDD Bhuj 27
EEE Mumbai 26
My condition in WHERE
clause is:if location = 'Bhuj' then Age>20 else if location = 'Mumbai' then Age>25
我在WHERE子句中的条件是:如果location = " Bhuj ",那么年龄>;如果location = " Mumbai”,那么年龄是>25岁
I am trying this code to achieve this:
我正在尝试这段代码来实现这一点:
SELECT * FROM testing
WHERE
CASE Location WHEN 'Bhuj' THEN Age>20
WHEN 'Mumbai' THEN Age>25
END;
This code works fine for MySQL (see this SQLFiddle) but does not work for SQL Server (see this SQLFiddle) and giving the following error:
此代码适用于MySQL(请参阅这个SQLFiddle),但不适用于SQL Server(请参阅这个SQLFiddle),并给出以下错误:
Incorrect syntax near '>'.: SELECT * FROM testing WHERE case Location When 'Bhuj' then Age>20 When 'Mumbai' then Age>25 end
不正确的语法“>”附近。:从测试中选择*,当“Bhuj”年龄为>20岁,“Mumbai”年龄为>25岁
Any suggestion?
任何建议吗?
2 个解决方案
#1
7
SELECT * FROM testing
WHERE
Age > case Location When 'Bhuj' then 20
When 'Mumbai' then 25
end
#2
13
I think this is what you're trying to achieve
我认为这就是你想要达到的目标
SELECT *
FROM testing
WHERE (Location = 'Bhuj' AND Age>20)
OR (Location = 'Mumbai' AND Age>25)
Check SQLFiddle
检查SQLFiddle
UPDATE:
更新:
Case statement returns a value, you can't have a condition inside it.
Case语句返回一个值,里面不能有条件。
#1
7
SELECT * FROM testing
WHERE
Age > case Location When 'Bhuj' then 20
When 'Mumbai' then 25
end
#2
13
I think this is what you're trying to achieve
我认为这就是你想要达到的目标
SELECT *
FROM testing
WHERE (Location = 'Bhuj' AND Age>20)
OR (Location = 'Mumbai' AND Age>25)
Check SQLFiddle
检查SQLFiddle
UPDATE:
更新:
Case statement returns a value, you can't have a condition inside it.
Case语句返回一个值,里面不能有条件。