Как выбрать топ 5 после 20 строк

У меня есть этот запрос:

select top 5 * from tbl_post ORDER BY Id DESC

Я хочу выбрать первые 5 строк после 20-й строки. Как я могу это сделать?


person Vítor Norton    schedule 15.07.2015    source источник
comment
какую версию SQL Server вы используете?   -  person Lamak    schedule 15.07.2015
comment
возможный дубликат получения определенного диапазона строк в SQL Server таблица   -  person Tab Alleman    schedule 15.07.2015
comment
На самом деле это база данных Azure SQL. Так что я думаю, что это 2014, или, может быть, 2012 год.   -  person Vítor Norton    schedule 15.07.2015


Ответы (3)


Используйте OFFSET и FETCH пункт MSDN OFFSET FETCH:

SELECT * FROM tbl_post ORDER BY whatever OFFSET 20 ROWS FETCH NEXT 5 ROWS ONLY;

Обратите внимание, что вам нужно что-то заказать, чтобы это работало, и вы не можете использовать top одновременно.

person tomsv    schedule 15.07.2015

with x as (select row_number() over(order by id desc) as rn, * from tbl_post)
select t.* 
from x join tbl_post t on x.id = t.id
where x.rn between 20 and 25

Это самый простой способ назначить номера строк и выбрать нужные строки позже.

person Vamsi Prabhala    schedule 15.07.2015
comment
Код был правильным до редактирования, теперь он просто сложнее :-) - person dnoeth; 15.07.2015
comment
это потому, что требовались значения только из tbl_post таблицы - person Vamsi Prabhala; 15.07.2015
comment
@dnoeth .. я бы хотел, чтобы в вопросе упоминались имена столбцов - person Vamsi Prabhala; 15.07.2015
comment
Если ваш хрустальный шар разбит, вы можете ожидать, что ОП выберет те столбцы, которые ему действительно нужны :-)) - person dnoeth; 15.07.2015

Используйте СМЕЩЕНИЕ и ПРЕДЕЛ

SELECT   * 
FROM     tbl_post 
ORDER BY id DESC offset 100 limit 5;
person vikram kumar muthyala    schedule 15.07.2015