我想要做的是仅在某个值(将动态加载)=某个值时才运行where子句。例如
IF ('<=' == '$dynamic_value') THEN WHERE...
这可能吗? ($动态值将为&lt; =,或&gt; =)
换句话说,我只想在特定值发生或调用时使用where子句。
答案 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
,否则'<='
位无效。