mysql - 如何以编程方式选择要在 WHERE 条件中使用的列?

标签 mysql sql

我有一个表 table,它包含三个字段:idfield1field2

我需要创建的 SQL 查询应该选择 id WHERE field1 LIKE 'Some string' 但如果 field1 NULL 我应该在伪 SQL 中对 field2 执行过滤:

SELECT id FROM table
WHERE (IF `field1` IS NULL THEN `field2` ELSE `field1`) LIKE 'Some string'

如何在 MySQL 中实现这一点?

感谢关注!

最佳答案

您可以使用 Flow Control Operators 之一.你可以这样写:

CASE 运算符(推荐)

SELECT id FROM table
WHERE CASE 
    WHEN `field1` IS NOT NULL THEN `field1`
    ELSE                           `field2`
END LIKE 'Some string'

IF 构造

SELECT id FROM table
WHERE IF(`field1` IS NOT NULL, `field1`, `field2`) LIKE 'Some string'

IFNULL 构造

SELECT id FROM table
WHERE IFNULL(`field1`, `field2`) LIKE 'Some string'

关于mysql - 如何以编程方式选择要在 WHERE 条件中使用的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33956247/

相关文章:

mysql - 如果结果为空,则从 3 个表中选择

php - Codeigniter 路线和语言标识符

mysql - 如何获取按日期范围列出在不同行中的mysql结果?

sql - 在 SQL 中使用 XML 时的 Where 子句

mysql - SQL存储过程,变量为空

SQL 对数据进行分页,其中分页从给定的主键开始

php - 在mysql中为单个记录插入多个联系人的最佳实践

mysql - 如果某个项目出现超过 10 次,请将其删除并存储新的

mysql - 限制Mysql需要从表中返回n%的随机记录

sql - 存储和比较独特的组合