我怎样才能获得特定的结果?

时间:2011-12-09 00:30:16

标签: sql sql-server-2008

是否可以检索特定范围的结果?我知道如何做TOP x,但我将检索的结果是太大而且会超时。我希望能够选择说出前10,000个结果然后接下来的10,000个等等。这可能吗?

2 个答案:

答案 0 :(得分:4)

实际上,所有SQL数据库实现都有一种方法可以指定要返回的起始行,以及 number 行。

例如,在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()进行编码 - 有关详细信息,请参阅this SO post

答案 1 :(得分:4)

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