Mysql
 sql >> Database >  >> RDS >> Mysql

Come posso SELEZIONARE le righe con MAX(Column value), DISTINCT by MULTIPLE colonne in SQL

Un metodo tipico utilizza una sottoquery correlata:

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

Forse un metodo leggermente migliore è:

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
             );

Questo è leggermente migliore perché (1) id è probabilmente una chiave primaria, quindi la corrispondenza è più veloce; e (2) se sono presenti più righe nella stessa data, viene restituita solo una riga.