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

Vyberte jednu hodnotu ze skupiny na základě pořadí z jiných sloupců

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;

Jediný průchod. Všechna ostatní řešení mi připadají O(n^2).



  1. Proč používat MySQL přes ploché soubory?

  2. Seřadit podle dne v týdnu od pondělí do neděle

  3. Co byste měli vědět o WITH NOCHECK při povolení omezení CHECK v SQL Server

  4. Vysvětlení rámce MySQL High Availability Framework – Část I:Úvod