MySQL ORDER BY LEAST 但忽略 NULL 值

问题描述 投票:0回答:1

我有以下 MySQL 查询,用于查找墨水量并根据最小值进行排序,以便我可以知道哪些墨水不足。但是,某些打印机是黑白的,并且 C、M 和 Y 列中具有 NULL 值。目前,在我的查询下方,NULL 值来到顶部并基本上被视为 0。

SELECT * FROM ink_levels ORDER BY LEAST(ink_c, ink_m, ink_y, ink_k, ink_waste)

有没有办法跳过上面查询中的 NULL 值?

谢谢

mysql
1个回答
0
投票

您可以使用 COALESCE() 返回列表中的第一个非空值。

在您的示例中,如果您替换

LEAST(ink_c, ink_m, ink_y, ink_k, ink_waste)

ORDER BY LEAST(
    COALESCE(ink_c, 99999),
    COALESCE(ink_m, 99999),
    COALESCE(ink_y, 99999),
    COALESCE(ink_k, 99999),
    COALESCE(ink_waste, 99999)
)

确保数值高于任何墨水量,您应该解决问题。

通过这样做,您可以确保在 ink 值为 null 的情况下返回较高的值。那么这个高值就不会在上面了。

© www.soinside.com 2019 - 2024. All rights reserved.