Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL - Ограничете броя на върнатите редове въз основа на броя на редовете

Използвайте ROW_NUMBER() функция за това:

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

Демонстрация:SQL Fiddle

 ROW_NUMBER() функцията присвоява номер на всеки ред. PARTITION BY не е задължително, но се използва за започване на номерирането отначало за всяка стойност в тази група, т.е.:ако PARTITION BY group_id след това за всеки уникален group_id стойност, номерирането ще започне отначало от 1. ORDER BY разбира се се използва за определяне на начина, по който трябва да върви броенето и се изисква в ROW_NUMBER() функция.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Премахване на кавички от всички редове в колона

  2. SQL Server и имплицитно преобразуване на типове

  3. Подзаявки в ограничение за проверка

  4. Научете как да използвате SQL Server Management Studio

  5. SQL Server 2016:Създайте таблица