将值传递给可能为null的查询

时间:2017-04-27 12:55:51

标签: mysql sql

我正在尝试为将从数据库返回对象的网站创建过滤器部分。

SELECT *
FROM users
WHERE type = "1"
AND age < 50
AND age > 20

输入此查询时,某些用户可能不想设置类型,只是按年龄过滤?是否有任何类型的通配符我可以传递给查询,所以如果用户没有定义它会返回所有通配符?

类型可以是1,2或3.如果没有传递给它,我希望它返回年龄在20到50岁之间的所有用户,然后是所有类型?

3 个答案:

答案 0 :(得分:0)

这可能是两种可能的解决方案,如果你想要年龄介于50和20之间的所有记录,首先很简单。如果type = 1且年龄介于50和20之间,则第二次查询将返回记录,

SELECT *
FROM users
WHERE age BETWEEN 20 AND 50

OR

SELECT * FROM users
WHERE 
    IF(type == 1) 
    THEN 
        type = 1 
    ELSE 
        1=1 
    END IF
AND age BETWEEN 20 AND 50

答案 1 :(得分:0)

SELECT * FROM USERS WHERE AGE BETWEEN 20 AND 50 AND COALESCE(TYPE,'1')=1

答案 2 :(得分:0)

尝试此查询:

select * from table_name where age between 20 and 50 AND type is null