SQL查询参数异常:传入-1时无法返回全部行的问题
解决SQL条件查询的参数匹配问题
原语句的问题在于,当@statusParam = -1时,WHERE条件等价于status = -1 OR status = -1,也就是只会筛选status等于-1的行,而你的表中status只有1和0,所以返回空结果,不符合预期。
正确的写法应该调整条件逻辑,当参数为-1时直接返回所有行,否则匹配status与参数值:
set @statusParam = -1; SELECT * FROM `db`.table_name WHERE @statusParam = -1 OR `status` = @statusParam;
逻辑说明
- 当
@statusParam传入-1时,@statusParam = -1这个条件成立,整个WHERE表达式结果为真,返回表中所有行 - 当
@statusParam传入0或1时,@statusParam = -1不成立,会执行status = @statusParam的匹配逻辑,返回对应状态的行
这样就能完全满足你的需求:参数为-1返回全部行,其他值返回匹配状态的行。
内容的提问来源于stack exchange,提问作者user1268139
相关产品推荐
相关产品推荐

