MySQL MAX Ejemplo

Tres funciones de mysql y tres resultados distintos.

Sea la siguiente tabla simplificada en MySQL ·client_states.

state_id | end_date
8;2000-01-01 00:00:00
9;2012-05-15 00:00:00

Quería obtener el último estado del usuario (la fecha más alta de las registradas del usuario) y ésto es lo que me he encontrado trasteando con la función MAX()

select state_id
from states_clients
where client_id=99996
having max(end_date);

Resultado Fail

8;2000-01-01 00:00:00

select max(state_id), max(end_date)
from states_clientes
where client_id=99996;

Resultado Win

9;2012-05-15 00:00:00

select state_id, max(end_date)
from states_clients
where client_id=99996;

Resultado Fail
8;2012-05-15 00:00:00

¿Por qué?

Conclusiones + stackoverfow:

  • Having siempre va con group by. Es por ello por lo que lo devuelve el resultado esperado.  Documentación SELECT de MySQL.
  • OJICO. Aunque estés seleccionado el valor máximo de una columna, no devuelven los valores en concordancia con las filas.  Como se ve en el último ejemplo está devolviendo ‘8;2012-05-15 00:00:00 ‘en vez de devolver  ‘8;2000-01-01 00:00:00’.
Anuncios

3 comentarios en “MySQL MAX Ejemplo

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s