sql >> Databasteknik >  >> RDS >> Sqlserver

SQL - Begränsa antalet returnerade rader baserat på antalet rader

Använd ROW_NUMBER() funktion för detta:

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

Den ROW_NUMBER() funktionen tilldelar ett nummer till varje rad. PARTITION BY är valfritt, men används för att starta om numreringen för varje värde i den gruppen, dvs:om du PARTITION BY group_id sedan för varje unikt group_id värde numreringen skulle börja om på 1. ORDER BY används naturligtvis för att definiera hur räkningen ska gå, och krävs i ROW_NUMBER() funktion.



  1. Installera Oracle 11g Release 2 Enterprise Edition på Windows 7 32-bitars

  2. fe_sendauth:inget lösenord angett fel efter installation av PostgreSQL-databas på Cloud9 IDE

  3. Skapa en databas med Connector/NET-programmering?

  4. Vilka är sätten att infoga och hämta BLOB-data från Oracle-databas med SQL?