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

¿Cómo puedo SELECCIONAR filas con MAX (valor de columna), DISTINTO por MÚLTIPLES columnas en SQL?

Un método típico utiliza una subconsulta correlacionada:

select t.*
from t
where t.date = (select max(t2.date) from t t2 where t2.env = t.env);

Quizás un método un poco mejor es:

select t.*
from t
where t.id = (select t2.id
              from t t2 
              where t2.env = t.env
              order by t2.date desc, t2.id desc
              limit 1
             );

Esto es un poco mejor porque (1) id es probablemente una clave principal, por lo que la coincidencia es más rápida; y (2) si hay varias filas en la misma fecha, solo se devuelve una fila.