Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como posso SELECIONAR linhas com MAX (valor da coluna), DISTINCT por várias colunas no SQL


Um método típico usa uma subconsulta correlacionada:
select t.*
from t
where t.date = (select max(t2.date) from t t2 where t2.env = t.env);

Talvez um método um pouco melhor seja:
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
             );

Isso é um pouco melhor porque (1) id é provavelmente uma chave primária, então a correspondência é mais rápida; e (2) se houver várias linhas na mesma data, apenas uma linha será retornada.