首页 > 解决方案 > Mysql选择查询如果条件参数为空则忽略该参数

问题描述

我有以下条件(m.idAgent = agent OR agent is null)。如果我将 null 传递给代理参数,它只会返回所有代理。但是我怎样才能在MYSQL中实现同样的目标。

即,如果我通过 null 则应忽略 where 条件的那部分,并且只应考虑其他不为 null 的条件。

标签: mysql

解决方案


你可以使用COALESCE如下:

WHERE COALESCE(agent, m.idAgent) = m.idAgent

这应该有效,因为 when agentis NULL,它只会被比较的 RHS 替换,因此总是会通过。我认为以下实际上是您的代码的样子:

WHERE COALESCE(?, m.idAgent) = m.idAgent

这里?是要在语句中绑定的值的占位符。


推荐阅读