如果value ='x',mysql运行where子句?

时间:2012-07-31 02:37:01

标签: mysql sql

我想要做的是仅在某个值(将动态加载)=某个值时才运行where子句。例如

IF ('<=' == '$dynamic_value') THEN WHERE...

这可能吗? ($动态值将为&lt; =,或&gt; =)

换句话说,我只想在特定值发生或调用时使用where子句。

3 个答案:

答案 0 :(得分:2)

您可以在CASE子句中使用WHERE表达式,如下所示:

SELECT *
FROM tbl
WHERE 
    CASE '$dynamic_value' 
        WHEN '>=' THEN column_a >= column_b AND other_conditions
        WHEN '<=' THEN column_a <= column_b AND other_conditions
        ELSE 1
    END

如果$dynamic_value不等于>=<=ELSE 1将由WHERE子句使用 - 这基本上就像拥有根本没有WHERE子句(并返回所有记录)。

由于您似乎在使用PHP并且$dynamic_value的值只能是>=<=,因此您可以直接插入参数,如:

$sql = "
    SELECT *
    FROM tbl
    WHERE column_a $dynamic_value column_b";

当然,如果来自用户输入,请务必检查$dynamic_value>=还是<=

答案 1 :(得分:1)

而不是IF条件,通常使用WHERE中的布尔逻辑来处理。将您的动态值与AND及其相应条件相匹配。

WHERE
  ('$dynamic_value' = '<=' AND othercolumn = othercondition)
  OR ('$dynamic_value' = '>=' AND othercolumn = someothercondition)

答案 2 :(得分:0)

您可以使用以下内容实现类似的效果

WHERE $dynamic_value <> '<=' OR <your-other-clause>

这样,除非<your-other-clause>设置为$dynamic_value,否则'<='位无效。