我有一个包含价格的表,我想在该表上创建一个具有最低价格的 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/