1

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

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

这可能吗?($dynamic 值将是 <= 或 >=)

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

4

3 回答 3

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不等于>=or <=ELSE 1则将由WHERE子句使用 - 这基本上就像根本没有WHERE子句(并返回所有记录)。

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

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

当然,如果来自用户输入,那么请确保您正在检查$dynamic_valueis>=<=.

于 2012-07-31T02:40:42.777 回答
1

IF这通常不是条件,而是在WHERE. AND将您的动态值与和它一起与其对应的条件相匹配。

WHERE
  ('$dynamic_value' = '<=' AND othercolumn = othercondition)
  OR ('$dynamic_value' = '>=' AND othercolumn = someothercondition)
于 2012-07-31T02:40:32.647 回答
0

您可以通过以下方式实现类似的效果

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

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

于 2012-07-31T02:40:19.043 回答