ВЫБЕРИТЕ наименьшее значение между двумя столбцами с MYSQL - PullRequest
1 голос
/ 07 марта 2020

Здравствуйте. Я пытаюсь выбрать наименьшее значение из 3 столбцов с помощью MySQL.

Проблема, с которой я сталкиваюсь, заключается в том, что в столбце может быть значение NULL. Как я могу получить наименьшее значение, которое не NULL?

Запуск select least(1, 3, NULL) вернет NULL, но я бы хотел получить 1 в качестве ответа.

Спасибо за вашу помощь.

1 Ответ

3 голосов
/ 07 марта 2020

Способ least() обработки null s - документированное поведение :

Если какой-либо аргумент равен NULL, результат равен NULL. Сравнение не требуется.

Это может показаться раздражающим, но распространение значения null на набор результатов означает, что ваша база данных сообщает вам, что одно из ваших значений не определено; это согласуется с поведением других операций, которые включают null (конкатенация строк, арифметические операции c, ...).

Если только третий столбец может быть null, и ни один из другие два, вы можете сделать:

least(col1, col2, coalesce(col3, col1))
...