我想做的是仅在某个值(将动态加载)=某个值时运行 where 子句。例如
IF ('<=' == '$dynamic_value') THEN WHERE...
这可能吗?($dynamic 值将是 <= 或 >=)
换句话说,我只想在某个值发生或调用时才使用 where 子句。
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_value
is>=
或<=
.
IF
这通常不是条件,而是在WHERE
. AND
将您的动态值与和它一起与其对应的条件相匹配。
WHERE
('$dynamic_value' = '<=' AND othercolumn = othercondition)
OR ('$dynamic_value' = '>=' AND othercolumn = someothercondition)
您可以通过以下方式实现类似的效果:
WHERE $dynamic_value <> '<=' OR <your-other-clause>
这样,除非设置为 ,否则该<your-other-clause>
位将无效。$dynamic_value
'<='