Как получить максимум двух значений в MySQL?

200

Я попытался, но не смог:

mysql> select max(1,0);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual 
that corresponds to your MySQL server version for the right syntax to use 
near '0)' at line 1
Теги:
max

3 ответа

383
Лучший ответ

Используйте GREATEST()

Например:

SELECT GREATEST(2,1);
  • 0
    пример: выбрать наибольший (queue.count - 1, 0) из очереди;
  • 32
    Необходимо помнить одну вещь: всякий раз, когда какое-либо одно значение содержит нуль в это время, эта функция всегда возвращает ноль в качестве ответа!
Показать ещё 4 комментария
18

Чтобы получить максимальное значение столбца по набору строк:

SELECT MAX(column1) FROM table; -- expect one result

Чтобы получить максимальное значение набора столбцов, литералов или переменных для каждой строки:

SELECT GREATEST(column1, 1, 0, @val) FROM table; -- expect many results
4

Вы можете использовать GREATEST функцию с полями с недействительными значениями. Если одно из этих значений (или обоих) может быть NULL, не используйте его (результат может быть NULL).

select 
    if(
        fieldA is NULL, 
        if(fieldB is NULL, NULL, fieldB), /* second NULL is default value */
        if(fieldB is NULL, field A, GREATEST(fieldA, fieldB))
    ) as maxValue

Вы можете изменить значение NULL на предпочтительное значение по умолчанию (если оба значения равны NULL).

  • 0
    Вот почему я искренне ненавижу MySQL. Какой огромный объем работы, чтобы сделать такую простую вещь.
  • 7
    Это можно просто заменить, select COALESCE(GREATEST(fieldA, fieldB),fieldA,fieldB) as maxValue . Это слишком сложно

Ещё вопросы

Сообщество Overcoder
Наверх
Меню