Как я могу получить конкретный кусок результатов? - PullRequest
4 голосов
/ 09 декабря 2011

Можно ли получить определенный диапазон результатов? Я знаю, как сделать TOP x, но результат, который я получу, слишком велик и истечет время ожидания. Я надеялся, что смогу выбрать первые 10000 результатов, затем следующие 10000 и так далее. Возможно ли это?

Ответы [ 2 ]

4 голосов
/ 09 декабря 2011
WITH Q AS (
  SELECT ROW_NUMBER() OVER (ORDER BY ...some column) AS N, ...other columns
  FROM ...some table
) SELECT * FROM Q WHERE N BETWEEN 1 AND 10000;

Подробнее о ROW_NUMBER () можно узнать здесь: http://msdn.microsoft.com/en-us/library/ms186734.aspx

4 голосов
/ 09 декабря 2011

Практически во всех реализациях SQL DB есть способ указать начальную строку для возврата, а также число строк.

Например, как в mysql, так и в postgres это выглядит так:

SELECT ...
ORDER BY something -- not required, but highly recommended
LIMIT 100 -- only get 100 rows
OFFSET 500; -- start at row 500

Обратите внимание, что обычно вы добавляете ORDER BY, чтобы убедиться, что ваши чанки согласованы

MS SQL Server (являющийся «притворной» БД) не поддерживает OFFSET напрямую, но его можно кодировать, используя ROW_NUMBER() - см. в этом SO * для получения более подробной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...