我想做的是仅当某个值(将动态加载)= 某个值时才运行 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
不等于>=
或 <=
, ELSE 1
将被 WHERE
使用子句 - 这基本上就像没有 WHERE
子句(并返回所有记录)。
因为您似乎正在使用 PHP 和 $dynamic_value
的值只能是>=
或 <=
,您可以直接插入参数,如:
$sql = "
SELECT *
FROM tbl
WHERE column_a $dynamic_value column_b";
当然,如果来自用户输入,那么请确保您正在检查是否 $dynamic_value
是 >=
或 <=
.
关于如果值 = 'x',Mysql 运行 where 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11732339/