2013-07-22 40 views
1

我正在寻找一种方法来返回某个范围之间的表的行,例如,如何获得具有10,000行的表中的100到200行?按行计数范围的SQL结果

这不是基于行中的任何数据,而主键虽然是增量式的,但不能用作索引。

我正在使用一个相当大的表,它必须在应用程序中显示给用户。现在我正在获取所有记录并使用Java Array获取行x到y,并通过Ajax(Web应用程序)将其发回给用户。

这个方法比我想要的要多得多(尽管少于一次向用户发送所有记录),所以我只想查询我需要的记录。

任何帮助表示赞赏,谢谢!

+4

您正在使用哪种SQL环境? 另外,为了使行号的概念具有任何意义,我们需要按某种东西进行排序。 –

回答

0

这样的事情可以帮助你....

SELECT PriceRank, ProductName, UnitPrice 
    FROM 
     (SELECT ProductName, UnitPrice, 
      ROW_NUMBER() OVER(ORDER BY UnitPrice DESC) AS PriceRank 
     FROM Products 
     ) AS ProductsWithRowNumber 
    WHERE PriceRank > <i>StartRowIndex</i> AND 
     PriceRank <= (<i>StartRowIndex</i> + <i>MaximumRows</i>) 

http://msdn.microsoft.com/en-us/library/bb445504.aspx

+0

@kevin感谢编辑 –

0

您可以使用LIMIT,但您也必须订购这些行。

select * 
from table 
order by id -- very important 
limit 100,100 

如果你不点的行,理论上你总是可以改变的起始行时,你得到相同 100行。这是因为无序查询可以返回任意命令的行,并且它将根据同时运行的其他查询以及在内存中缓存哪些行而有所不同,等等。