sql >> Database teknologi >  >> RDS >> Sqlserver

Vælg den øverste række fra hver gruppe

Hvis du bruger SQL-Server (minimum 2005) kan du bruge en CTE med ROW_NUMBER fungere. Du kan bruge CAST for version for at få den korrekte rækkefølge:

WITH cte 
     AS (SELECT id, 
                userid, 
                version, 
                datetime, 
                Row_number() 
                  OVER ( 
                    partition BY userid 
                    ORDER BY Cast(version AS INT) DESC) rn 
         FROM   [dbo].[table]) 
SELECT id, 
       userid, 
       version, 
       datetime 
FROM   cte 
WHERE  rn = 1 
ORDER BY userid

Demo

ROW_NUMBER returnerer altid én post, selvom der er flere brugere med samme (øverste) version. Hvis du vil returnere alle "top-version-bruger-records", skal du erstatte ROW_NUMBER med DENSE_RANK .



  1. konfiguration af databaseforbindelse i Yii framework

  2. SSH tunnelerer en MySQL-forbindelse ved hjælp af C#

  3. Databasedesign til lagring af chatbeskeder mellem mennesker

  4. Data skal erstattes i henhold til opslagstabel