mysql - 如何在 WHERE 子句中编写带有 IF 的查询?

标签 mysql

我想知道是否可以编写这样的查询:

PHP变量做比较: $column2 = A; $column3 = null;

SELECT * FROM table1 
WHERE col1 = 1
IF(col2 IS NOT NULL)
col2 = $column2
AND 
IF(col3 IS NOT NULL)
col3 = $column3

总体思路是将对象数组与 MySQL 表中定义的动态过滤器进行匹配。但我只想比较不为空的列。

任何人都可以帮助或指导我找到更好的方法吗? 谢谢

最佳答案

我认为这可能是正确的

SELECT * FROM table1 
WHERE col1 = 1
AND
IFNULL(col2, $column2)=$column2
AND 
IFNULL(col3, $column3)=$column3;

但我会使用 php 代码创建 where 子句来动态创建 SQL 语句

关于mysql - 如何在 WHERE 子句中编写带有 IF 的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53638393/

相关文章:

c# - 哪种实现对于静态数据库连接更好?

mysql - NATURAL JOIN 无法正常工作

javascript - 未捕获( promise )SyntaxError : Unexpected token < in JSON at position 0

MySQL 如何通过 MAX(id) 选择 smth....WHERE userID = 某个数字 GROUP BY smth

php - 计算外键第一次出现的次数

MySQL:通过字符串比较使用其他表中的id更新表列

php - 从类中的函数获取具有特定内容的变量

php - SQL 插入二进制设置为 30

php - SQL 性能 - SELECT COUNT 与 SELECT id 与 LIMIT 1

mysql - yum 更新出现 'Obsoleted by ...' 错误