【发布时间】:2020-08-04 05:41:22
【问题描述】:
我试图在同一个表中的一行的两列中找到最小的数字,但需要注意的是,其中一列在特定行中可能为空。如果其中一列为空,我希望为该行返回另一列中的值,因为在这种情况下这是最低的非空列。如果我在 MySQL 5.1 中使用 least() 函数:
select least(1,null)
这返回 null,这不是我想要的。在这种情况下,我需要查询返回 1。
我已经能够通过这个查询得到我想要的一般结果:
select least(coalesce(col1, col2)) , coalesce(col2,col1))
只要 col1 和 col2 都不为 null,每个 coalesce 语句都会返回一个数字,并且 least() 会处理查找最小值。
有没有更简单/更快的方法来做到这一点?我在这种情况下使用 MySQL,但欢迎使用通用解决方案。
【问题讨论】:
-
更快?你确定它很慢吗?
-
没有判断它一定很慢,但它调用了3个函数而不是可能的一个。我在查询的 order by 子句中使用它,我需要尽可能快。