2

我在查询中使用年龄过滤器,我有多个年龄可供选择,如下所示

18
岁以下 25岁以下
25-34
35-44
45-54
55-64
65 岁以上

我会从mysql中选择关于年龄的行如下

select * from users where isactive=1 
AND (DateOfBirth > (CURDATE() - INTERVAL  $Age YEAR) OR $Age = 0)

现在我想添加关于年龄的 case 语句 if $age variable =25-34 以便我可以选择相关

或者任何人都可以告诉我如何在案例中编写和声明,例如

case $age
when $age='25' AND (DateOfBirth > (CURDATE() - INTERVAL  $Age YEAR) OR $Age = 0)
end case

这是完整的查询,我在搜索结果时工作得很好,只有年龄过滤器需要上面多个年龄的 case 语句,这里是查询:

SELECT * FROM user WHERE IsDeleted!=1 AND (IsMale = $Gender OR $Gender = 2)

/// AT THIS POINT I NEED to add multple case to filter it by ages (after gender filter)

4

1 回答 1

1

这应该可以正常工作:

CASE
  WHEN $age ='25' 
       AND 
       (
         ($Age = 0) 
         OR 
         (DateOfBirth > (CURDATE() - INTERVAL  $Age YEAR))
       )
  Then ...
END
于 2012-12-12T13:33:39.627 回答