mysql - Mysql选择查询如果条件参数为空则忽略该参数
问题描述
我有以下条件(m.idAgent = agent OR agent is null)。如果我将 null 传递给代理参数,它只会返回所有代理。但是我怎样才能在MYSQL中实现同样的目标。
即,如果我通过 null 则应忽略 where 条件的那部分,并且只应考虑其他不为 null 的条件。
解决方案
你可以使用COALESCE
如下:
WHERE COALESCE(agent, m.idAgent) = m.idAgent
这应该有效,因为 when agent
is NULL
,它只会被比较的 RHS 替换,因此总是会通过。我认为以下实际上是您的代码的样子:
WHERE COALESCE(?, m.idAgent) = m.idAgent
这里?
是要在语句中绑定的值的占位符。
推荐阅读
- mysql - 我可以使用带有 MySQL 事务的文件来更新 mariadb 吗?
- ios - 更新 xcode 后反应原生 8badf00d
- python - 来自一些 csv 文件的 Python 字典
- java - 避免为空元素生成 XML 自闭合标签并生成自定义
开始标签 - android - 使用新的 androidx.BiometricPrompt 通过生物识别注册使密钥无效
- kotlin - 在 Dispatchers.IO 上启动 Kotlin 协程时出错
- airflow - 根据 DB 返回值动态添加气流任务
- python - 使用 groupie 时 Spark 无法 mkdir
- wpf - 将 Stackpanel 宽度调整为 XAML WPF 中最大的子项 (TextBlock)
- javascript - 循环遍历带有子元素的多维数组并构建路径图