在WHERE子句中的CASE语句中有两个参数

时间:2012-08-14 14:30:19

标签: sql sql-server

我正在运行查询以生成适用各种参数的所有记录。

说有关的表格包含有关人员的详细信息。

我想制作“男性”和“女性”参赛作品的记录,但我只想展示年龄低于“40”的男性。

目前我有这样的查询;

SELECT *
FROM table
WHERE gender IN('Male', 'Female') AND age < 40

如何仅将年龄规则应用于男性?有CASE声明吗?

修改

由于我在WHERE子句中有许多其他参数,我在这里没有提到,我想避免使用OR运算符,对于没有说明这一点而道歉。

5 个答案:

答案 0 :(得分:3)

不需要CASE语句只需更改您的WHERE子句,以包含一个特定于'Male'记录的过滤器和一行'Female'记录:

SELECT *
FROM table
WHERE (gender = 'Male' AND age < 40)
    OR gender = 'Female'

这是SQL Fiddle with a Demo

编辑如果您的WHERE子句中有更多项目,您只需使用括号添加更多标准:

SELECT *
FROM table
WHERE 
(
    (gender = 'Male' AND age < 40)
        OR gender = 'Female'
)
AND -- place your other WHERE filters here

答案 1 :(得分:2)

有很多方法可以写这个,但这可能是最清楚的:

SELECT * 
FROM table 
WHERE gender = 'Female' 
    or (gender = 'Male' AND age < 40) 

答案 2 :(得分:2)

SELECT * 
FROM table 
WHERE (gender = 'Female' OR (gender = 'Male' AND age < 40)) AND ...
    -- the rest of your WHERE criteria goes here

答案 3 :(得分:1)

SELECT *
FROM table
WHERE (age < 40 and gender = 'Male')
or gender = 'Female'

答案 4 :(得分:0)

使用IN no =

SELECT *
FROM table 
WHERE gender IN('Female') OR (gender IN('Male') AND age < 40);