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

SQL - Begræns antallet af returnerede rækker baseret på et antal rækker

Brug ROW_NUMBER() funktion til dette:

SELECT *
FROM (select *,ROW_NUMBER() OVER (PARTITION BY group_id ORDER BY item_id) as RowRank 
      from items_in_groups
      )sub
WHERE RowRank <=2

Demo:SQL Fiddle

 ROW_NUMBER() funktion tildeler et nummer til hver række. PARTITION BY er valgfri, men bruges til at starte nummereringen forfra for hver værdi i den gruppe, dvs.:hvis du PARTITION BY group_id derefter for hver unikke group_id værdien ville nummereringen starte forfra ved 1. ORDER BY bruges selvfølgelig til at definere, hvordan optællingen skal gå, og er påkrævet i ROW_NUMBER() funktion.



  1. Kan ikke nulstille root-adgangskoden med --skip-grant-tables på ubuntu 16

  2. Sjovt med beskeder

  3. Sådan indsætter du et objekt (mere end 10 egenskaber) i mysql via mybatis baseret på annotering uden at liste alle egenskaber

  4. SQL-selv-deltagelsesforespørgsel? Hvordan får man kategorier underkategorier?