sql >> Databasteknik >  >> RDS >> Mysql

Välj ett värde från en grupp baserat på ordning från andra kolumner

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 pass. Alla andra lösningar ser ut som O(n^2) för mig.



  1. Hur man använder kommentarsfunktionen på bästa sätt i MySQL

  2. Hur ställer jag in en permanent länk för ditt blogginlägg efter datum och titel på inlägget?

  3. Hur släpper man flera intervallpartitioner baserat på datum?

  4. Hur gör man en uppdatering + går med i PostgreSQL?