2009-10-14 3 views

ответ

399

Использование GREATEST()

Например:

SELECT GREATEST(2,1); 
+0

пример: выберите наибольший (queue.count - 1, 0) из очереди; – Jahmic

+27

нужно помнить, что всякий раз, когда какое-либо одно значение содержит null, эта функция всегда возвращает null в качестве ответа! – sanghavi7

+16

Существует также ['LEAST'] (http://dev.mysql.com/doc/refman/5.0/ru/comparison-operators.html#function_least) – bobobobo

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. Какая огромная работа, чтобы сделать такую ​​простую вещь. –