À 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 argumentoGREATEST()
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.