Я пытался, но не получилось:
mysql> select max(1,0);
ОШИБКА 1064 (42000): у вас ошибка в синтаксисе SQL; проверить руководство что соответствует вашей версии сервера MySQL для правильного использования синтаксиса около '0)' в строке 1
Я пытался, но не получилось:
mysql> select max(1,0);
ОШИБКА 1064 (42000): у вас ошибка в синтаксисе SQL; проверить руководство что соответствует вашей версии сервера MySQL для правильного использования синтаксиса около '0)' в строке 1
Ответы:
Используйте БОЛЬШОЙ ()
Например:
SELECT GREATEST(2,1);
Примечание: всякий раз, когда какое-либо одно значение содержит ноль в то время, эта функция всегда возвращает ноль (спасибо user @ sanghavi7)
GREATEST
так что я могу получить значения для cirtain колонки
select greatest(date1, ifnull(date2, "0000-00-00 00.00:00")) from table1 where date2 is null;
вы получите дату1.
GREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
Чтобы получить максимальное значение столбца в наборе строк:
SELECT MAX(column1) FROM table; -- expect one result
Чтобы получить максимальное значение набора столбцов, литералов или переменных для каждой строки:
SELECT GREATEST(column1, 1, 0, @val) FROM table; -- expect many results
GREATEST
. Любое нулевое значение приведет к тому, что функция вернет нулевое значение. Чтобы предотвратить это, вы можете сделатьGREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
Вы можете использовать функцию 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).
select COALESCE(GREATEST(fieldA, fieldB),fieldA,fieldB) as maxValue
. Это слишком сложно
GREATEST(COALESCE(column1, 0), COALESCE(column2, 0))