Mysql LEAST() 大于0

标签 mysql

我有一个包含价格的表,我想在该表上创建一个具有最低价格的 View 。

我的表有例如价格1,价格2列。

我想我可以用 LEAST() 来实现

例如从价目表中选择最低(价格1,价格2)

但它应该只考虑大于 0 或不为空的价格。

我可以用 LEAST() 来做到这一点吗?

感谢您的建议。

最佳答案

必须小心,因为如果任一比较器为 NULL,则 LEAST() 返回 NULL。

SELECT NULLIF(LEAST(
    COALESCE(NULLIF(price1,0),999999999),
    COALESCE(NULLIF(price2,0),999999999)),
999999999) AS least_price 
FROM pricelist

我假设价格可以为 NULL、零或大于零,但不能小于零。如果价格为零,我使用 NULLIF 强制价格为 NULL。然后使用 COALESCE 强制 NULL 为一个非常大的值,该值肯定大于其他值。

使用 LEAST 比较两者。

如果两个价格最初均为 NULL 或零,则比较将返回非常大的值。这可能不是您想要的,因此再次使用 NULLIF,使其成为 NULL。

关于Mysql LEAST() 大于0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25555491/

相关文章:

mysql - 获取存储过程的参数数量

mysql - 如何在 MySQL 中返回数据透视表输出?

mysql - Node +SQL列不能为空

Mysql Left Join 在多个条件下

mysql - 为什么 MySQL 不再包含像样的迁移工具?

mysql - 无法理解这个 mysql 查询的逻辑意义

php - 如何用 php/MySQL 做循环日期

c# - 未为成员 MySql.Data.MySqlClient.MySqlException、MySql.Data 解析 ASP.NET MVC 类型

mysql - 验证 MySQL 中的时间格式有效性

php - 如何使用mysql停止php中的空组