mysql - mysql : Add if condition in where statement?

标签 mysql sql null

我想选择所有客户或来自同一 SP 的一名客户。目前我们正在维护两个 SP 来获取这些详细信息:

即要获得所有客户:

select id, name from customers

并获得一位客户:

select id, name from customers
where id=id_from_input

为了使它们变得通用,我想到将 id_from_input 传递为 null 来获取所有客户。我尝试了多种方法在我的 sql 中创建一个适用于该计划的条件 where 语句,但没有任何效果。例如:

select id, name from customers
where if(id_from_input <> null) id=id_from_input; end if

给我语法错误。

如何创建一个 where 子句,当 id_from_input 为 null 时返回所有行,否则返回匹配行?

最佳答案

表达式x <> null从来都不是真的;您只能使用 is null ,或is not null ,测试是否为空。纠正你的尝试给出:

select id, name from customers
where id_from_input is null or id = id_from_input

或者想要更简洁的东西(恕我直言,优雅):

select id, name from customers
where id = coalesce(id_from_input, id)

关于mysql - mysql : Add if condition in where statement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42479170/

相关文章:

mysql - 将 SQL 查询结果卸载到变量而不是 shell 脚本上的文件

mysql - MySQL中的 "the client for a session"是什么?

mysql - SQL - 每个访问者访问工具的次数

java - 下面一行如何生成始终评估为 false 的 Sonar qube 问题?

mysql - 计算前 100 行中的匹配项

sql - 使用 GIN 索引进行 Postgres 文本搜索并在其他列上对 DESC 进行排序

sql - MS Access 中的多字段关系

c++ - 当我调用方法 C++ 时对象恢复为 Null

mysql - 在数据库中找不到空值

mysql - 使用 SQL 从多个表中获取公共(public)值