我有那些表,我想同时检查相同的属性:
Person
id---name
1----Paul
2----Tom
3----Jim
Age
id---wert------personId
1----28--------1
2----25--------1
3----30--------3
我想做这样的事情。
select * from Person p, Age where personId = p.id and CASE WHEN
name = 'Paul' THEN Age > 28 WHEN name = 'Tom' THEN Age <....
怎么可能?在WHERE子句中使用CASE THEN吗?请不要考虑表格的结构,而只考虑原则。
任何想法? 谢谢
答案 0 :(得分:1)
你可能会这样做
select
*
from
Person p, Age
where personId = p.id
and CASE
WHEN name = 'Paul' THEN Age > 28
WHEN name = 'Tom' THEN Age <....
WHEN expr then expr that evals to bool
END
答案 1 :(得分:0)
案例当我相信需要成为表达的一部分,而不是表达本身。它的常见用例是在select中,但是你可以在where。
中使用它在选择中,这将是:
select
case name
when 'paul' then 28
when 'jim' then 30
end
from X
要在您执行此操作的位置使用它:
select * from X where age = case name when 'jim' then 28 else 30 end
根据您尝试实现的目标,您可能需要在where子句中考虑OR语句而不是case。