Une méthode typique utilise une sous-requête corrélée :
select t.*
from t
where t.date = (select max(t2.date) from t t2 where t2.env = t.env);
Peut-être une méthode légèrement meilleure est :
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
);
C'est légèrement mieux car (1) id
est probablement une clé primaire, donc la correspondance est plus rapide ; et (2) s'il y a plusieurs lignes à la même date, une seule ligne est renvoyée.