Подтвердить что ты не робот

MySQL - найдите MIN, но не ноль

Я пытаюсь получить минимальное значение столбца в MySQL с помощью функции MIN. Но можно ли сказать MySQL игнорировать нулевые значения? Проблема в том, что я сохраняю 0 как значение по умолчанию вместо NULL для столбца tinyint. Я хочу получить минимальное значение, превышающее 0.

SELECT a.baseloc_id, 
a.baseloc_latitude, 
a.baseloc_longitude, 
a.baseloc_distance, 
MIN(b.basecost_ton2_cost) as minTon2, 
MIN(b.basecost_ton3_cost) as minTon3, 
MIN(b.basecost_ton10_cost) as minTon10 
FROM bbox_logi_base_locations a 
LEFT JOIN bbox_logi_base_cost b 
    USING (baseloc_id) 
GROUP BY a.baseloc_id;

Спасибо за любую помощь.

EDIT 01:

Извините, что я забыл упомянуть об этом. Таблица bbox_logi_base_cost содержит строки, содержащие фрагментированные значения. Например, одна строка может иметь basecost_ton2_cost как 0, а другие столбцы заполнены значениями. И другая строка может иметь каждый столбец, кроме одного, как 0. Таким образом, никакая строка не может быть отфильтрована с использованием условия WHERE.

4b9b3361

Ответ 1

Используйте это:

MIN(NULLIF(value, 0))