我想检索条件为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结束
有什么建议吗?
答案 0 :(得分:14)
我认为这是你想要实现的目标
SELECT *
FROM testing
WHERE (Location = 'Bhuj' AND Age>20)
OR (Location = 'Mumbai' AND Age>25)
更新:
Case语句返回一个值,你不能在里面有条件。
答案 1 :(得分:7)
SELECT * FROM testing
WHERE
Age > case Location When 'Bhuj' then 20
When 'Mumbai' then 25
end