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

Cómo seleccionar una fila de valor máximo en la tabla mysql

Tienes que leer sobre el group by cláusula.

MySQL está siendo mucho más permisivo de lo que debería, introduciendo confusión en el proceso. Básicamente, cualquier columna sin un agregado debe incluirse en el group by cláusula. Pero el azúcar sintáctico de MySQL permite "olvidar" las columnas. Cuando lo hace, MySQL escupe un valor arbitrario del conjunto por el que se está agrupando. En su caso, la primera fila del conjunto es bob , por lo que devuelve eso.

Su primera declaración (usando max() sin un group by ) es simplemente incorrecto.

Si desea uno de los usuarios más antiguos, order by age desc limit 1 es la forma correcta de proceder.

Si desea todos los usuarios más antiguos, necesita una subselección:

SELECT p.* FROM people p WHERE p.age = (select max(subp.age) from people subp);