Эквивалентное СМЕЩЕНИЕ SQL Server

Я использую Предприятие SQL Server 2008 года на Windows Server 2008. Я хочу выбрать результат лучших 11 к лучшим 20 (например, Я только интересуюсь 11-м к 20-му результату). Какие-либо идеи, как записать этот запрос в tsql эффективно?

заранее спасибо, George

8
задан Daniel Vassallo 10 July 2010 в 14:14
поделиться

2 ответа

К сожалению, SQL Server не предлагает ничего похожего на синтаксис MySQL OFFSET. Однако вы можете попробовать использовать производную таблицу следующим образом:

SELECT some_field
FROM   (
          SELECT some_field, ROW_NUMBER() OVER (ORDER BY some_id) AS rownum
          FROM   table
       ) AS t
WHERE  t.rownum BETWEEN 11 AND 20
17
ответ дан 5 December 2019 в 06:52
поделиться

Предполагая поле сортировки PK,

select top 10 * from MyTable
where PK not in (select top 10 PK from Mytable order by PK)
order by PK

Edit: вот вариант

select top 10 * from 
(select top 20 * from MyTable order by PK) as MySelection
order by PK desc
2
ответ дан 5 December 2019 в 06:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: