Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MAX() vs GREATEST() no MySQL:Qual é a diferença?


À primeira vista, o MySQL MAX() e GREATEST() funções executam uma operação semelhante. Ambos retornam o valor máximo de um intervalo de valores. No entanto, há uma diferença entre essas duas funções.

A melhor maneira de ver a diferença entre essas duas funções é comparar sua sintaxe.


Sintaxe


A sintaxe para cada função é assim:
MAX([DISTINCT] expr) [over_clause]
GREATEST(value1,value2,...)

Então já, eles parecem completamente diferentes. O MAX() função aceita o DISTINCT palavra-chave, bem como um OVER cláusula (e o GREATEST() função não).

No entanto, a principal diferença entre essas duas funções está nos argumentos aceitos. Especificamente:
  • MAX() aceita um argumento
  • GREATEST() aceita vários argumentos

Então MAX() é normalmente usado para retornar o valor máximo em uma coluna em um banco de dados. A tabela pode conter muitas linhas, mas esta função retorna aquela com o valor máximo.

GREATEST() por outro lado, retorna o argumento de valor máximo da lista de argumentos passados ​​a ele. Então você pode passar, digamos, 3 argumentos para esta função e ela retornará aquele com o maior valor.

Exemplo 1 – A função MAX()


Aqui está um exemplo para demonstrar o MAX() função.
SELECT MAX(Population) AS 'Result'
FROM City;

Resultado:
+----------+
| Result   |
+----------+
| 10500000 |
+----------+

Este exemplo encontra a cidade com a maior população de City tabela. A coluna que contém a população de cada cidade é chamada de Population .

O ponto chave sobre este exemplo é que apenas um argumento foi fornecido para a função, mas várias linhas foram consultadas.

Se você tentar passar vários argumentos para o MAX() função, você receberá um erro.

Exemplo 2 – A função GREATEST()


Aqui está um exemplo para demonstrar o GREATEST() função.
SELECT GREATEST(1, 5, 9) AS 'Result';

Resultado:
+--------+
| Result |
+--------+
|      9 |
+--------+

Portanto, neste caso, fornecemos três argumentos. Cada argumento é comparado com o outro. Isso contrasta com o argumento único fornecido ao MAX() função.

Se você tentar passar um único argumento para o GREATEST() função, você receberá um erro.