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

Hvordan kan jeg VÆLGE rækker med MAX (kolonneværdi), DISTINCT ved FLERE kolonner i SQL

En typisk metode bruger en korreleret underforespørgsel:

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

En lidt bedre metode er måske:

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

Dette er lidt bedre, fordi (1) id er sandsynligvis en primær nøgle, så matchningen er hurtigere; og (2) hvis der er flere rækker på samme dato, returneres kun én række.



  1. Tilføj dato til mysql fra php til sortering senere

  2. Skift decimalseparator i MySQL

  3. Kan ikke oprette forbindelse til localhost, men kan med computernavn i SQL Server 2008

  4. Sådan fungerer REPEAT() i MariaDB