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

Vælg en værdi fra en gruppe baseret på rækkefølge fra andre kolonner

SELECT g, a, b, v
  FROM (
            SELECT *, 
                   @rn := IF(g = @g, @rn + 1, 1) rn, 
                   @g := g
              FROM (select @g := null, @rn := 0) x, 
                   tab
          ORDER BY g, a desc, b desc, v
       ) X
 WHERE rn = 1;

Enkelt pas. Alle de andre løsninger ser O(n^2) ud for mig.



  1. Kan ikke gemme UTF8-tegn i MySQL

  2. Kan jeg bruge en stream til at INDSÆTTE eller OPDATERE en række i SQL Server (C#)?

  3. Sådan får du indsat værdi for trigger

  4. Hvorfor kører den 2. T-SQL-forespørgsel meget hurtigere end den første, når den kaldes af Reporting Services 2005 i en web-app