如果值 = 'x',Mysql 运行 where 子句?

标签 mysql sql

我想做的是仅当某个值(将动态加载)= 某个值时才运行 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/

相关文章:

mysql - MySQL where 子句中的字符串与 Blob 比较

javascript - Node + Mysql - 连接问题

python - 无法安装flask-mysqldb

mysql - 如何根据评分获得前3名用户

Mysql 8远程访问

mysql - 将查询结果分配给 MySQL 变量

mysql - 根据 2 列对表进行分组

sql - Listagg Overflow函数实现(Oracle SQL)

sql - 只允许两个表之一引用基表的约束

mysql - 如何获取MySQL存储过程中报告的每天登记的额外小时数