Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL - Beschränken Sie die Anzahl der zurückgegebenen Zeilen basierend auf der Anzahl der Zeilen

Verwenden Sie die ROW_NUMBER() Funktion dazu:

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

Die ROW_NUMBER() Die Funktion weist jeder Zeile eine Nummer zu. PARTITION BY ist optional, wird aber verwendet, um die Nummerierung für jeden Wert in dieser Gruppe neu zu beginnen, dh:wenn Sie PARTITION BY group_id verwenden dann für jede eindeutige group_id Wert würde die Nummerierung wieder bei 1 beginnen. ORDER BY wird natürlich verwendet, um zu definieren, wie die Zählung ablaufen soll, und wird in der ROW_NUMBER() benötigt Funktion.