sql >> Databáze >  >> RDS >> Mysql

Jak mohu VYBRAT řádky s MAX (hodnota sloupce), DISTINCT by MULTIPLE sloupců v SQL

Typická metoda používá korelovaný poddotaz:

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

Možná trochu lepší metoda je:

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

To je o něco lepší, protože (1) id je pravděpodobně primární klíč, takže shoda je rychlejší; a (2) pokud je ke stejnému datu více řádků, vrátí se pouze jeden řádek.



  1. Hibernace dotazů na databázi

  2. 4 Úžasné zdroje monitorování SQL Serveru pro správce databází

  3. SQL SELECT MAX

  4. Jak přejmenovat primární klíč v Oracle tak, aby jej bylo možné znovu použít