sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag VÄLJA rader med MAX (kolumnvärde), DISTINCT by MULTIPLE kolumner i SQL

En typisk metod använder en korrelerad underfråga:

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

En kanske lite bättre metod är:

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

Detta är något bättre eftersom (1) id är förmodligen en primärnyckel, så matchningen är snabbare; och (2) om det finns flera rader på samma datum, returneras endast en rad.



  1. Använder GO inom en transaktion

  2. Fixa serialiserade data trasiga på grund av redigering av MySQL-databas i en textredigerare?

  3. Hibernate:använd backticks för MySQL men inte för HSQL

  4. EBS 12.2.5 och högre:Feljustering av inloggningssidans knapp