sql >> Base de Datos >  >> RDS >> Mysql

MAX() vs GREATEST() en MySQL:¿Cuál es la diferencia?

A primera vista, MySQL MAX() y GREATEST() funciones realizan una operación similar. Ambos devuelven el valor máximo de un rango de valores. Sin embargo, hay una diferencia entre estas dos funciones.

La mejor manera de ver la diferencia entre estas dos funciones es comparar su sintaxis.

Sintaxis

La sintaxis de cada función es así:

MAX([DISTINCT] expr) [over_clause]
GREATEST(value1,value2,...)

Así que ya se ven completamente diferentes. El MAX() la función acepta DISTINCT palabra clave, así como un OVER cláusula (y el GREATEST() la función no lo hace).

Sin embargo, la diferencia clave entre estas dos funciones está en los argumentos aceptados. Específicamente:

  • MAX() acepta un argumento
  • GREATEST() acepta múltiples argumentos

Entonces MAX() se usa normalmente para devolver el valor máximo en una columna en una base de datos. La tabla puede contener muchas filas, pero esta función devuelve la que tiene el valor máximo.

GREATEST() por otro lado, devuelve el argumento de valor máximo de la lista de argumentos que se le pasan. Por lo tanto, podría pasar, digamos, 3 argumentos a esta función y devolverá el que tenga el valor más grande.

Ejemplo 1:la función MAX()

Aquí hay un ejemplo para demostrar el MAX() función.

SELECT MAX(Population) AS 'Result'
FROM City;

Resultado:

+----------+
| Result   |
+----------+
| 10500000 |
+----------+

Este ejemplo encuentra la ciudad con la población más grande de la City mesa. La columna que contiene la población de cada ciudad se llama Population .

El punto clave de este ejemplo es que solo se proporcionó un argumento a la función, pero se consultaron varias filas.

Si intenta pasar múltiples argumentos a MAX() obtendrá un error.

Ejemplo 2:la función GREATEST()

Aquí hay un ejemplo para demostrar el GREATEST() función.

SELECT GREATEST(1, 5, 9) AS 'Result';

Resultado:

+--------+
| Result |
+--------+
|      9 |
+--------+

Entonces, en este caso, proporcionamos tres argumentos. Cada argumento se compara con el otro. Esto contrasta con el único argumento proporcionado a MAX() función.

Si intenta pasar un único argumento a GREATEST() obtendrá un error.