Простая математическая функция max в MySQL - PullRequest
11 голосов
/ 17 декабря 2009

Как найти максимум двух явных значений в MySQL? Что-то вроде MAXIMUM (1, @foo).

Есть групповые функции, такие как MAX, MIN, AVG и т. Д., Которые принимают имя столбца в качестве аргумента и работают с наборами результатов. Можно ли преобразовать два явных значения в набор результатов и использовать эти функции? Какие-то другие способы?

P.S .: Мне нужна функция max для одной из моих хранимых процедур.

Ответы [ 2 ]

27 голосов
/ 17 декабря 2009

Как найти максимум двух явных значений в MySQL? Что-то вроде MAXIMUM (1, @foo).

Используйте функцию GREATEST :

GREATEST(1, @foo)

... будет возвращать любое большее значение - если 1 больше значения в @foo, вы получите 1. В противном случае вы получите любое значение в @foo. Кроме того, это , а не агрегатная функция.

Альтернативой может быть использование оператора CASE:

CASE WHEN 1 > @foo THEN 1 ELSE @foo END

... потому что CASE является стандартом ANSI - это будет работать на Oracle, MySQL, SQL Server, Postgres ...

2 голосов
/ 17 декабря 2009

Вы можете использовать IF(1 > @foo,1,@foo)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...