我正在运行查询以生成适用各种参数的所有记录。
说有关的表格包含有关人员的详细信息。
我想制作“男性”和“女性”参赛作品的记录,但我只想展示年龄低于“40”的男性。
目前我有这样的查询;
SELECT *
FROM table
WHERE gender IN('Male', 'Female') AND age < 40
如何仅将年龄规则应用于男性?有CASE声明吗?
修改
由于我在WHERE子句中有许多其他参数,我在这里没有提到,我想避免使用OR运算符,对于没有说明这一点而道歉。
答案 0 :(得分:3)
不需要CASE
语句只需更改您的WHERE
子句,以包含一个特定于'Male'
记录的过滤器和一行'Female'
记录:
SELECT *
FROM table
WHERE (gender = 'Male' AND age < 40)
OR gender = 'Female'
编辑如果您的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);