1

我正在寻找一种方法来返回一个范围之间的表的行,例如如何在一个有 10,000 行的表中获得第 100 到 200 行?

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

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

这种方法花费的时间比我想要的要多得多(尽管比一次将所有记录发送给用户要少)所以我只想查询我需要的记录。

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

4

3 回答 3

3

select * from table limit 100,100

http://dev.mysql.com/doc/refman/5.5/en/select.html并搜索“限制”

于 2013-07-22T19:46:24.033 回答
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

于 2013-07-22T19:50:23.557 回答
0

您可以使用 LIMIT,但也必须对行进行排序。

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

如果您不对行进行排序,理论上您在更改起始行时始终可以获得相同的 100 行。这是因为无序查询可以按任意顺序返回行,并且会根据同时运行的其他查询以及内存中缓存的行等而有所不同。

于 2013-07-23T00:35:52.590 回答