我正在寻找一种方法来返回一个范围之间的表的行,例如如何在一个有 10,000 行的表中获得第 100 到 200 行?
这不是基于行内的任何数据,主键虽然是增量的,但不能用作索引。
我正在使用一个相当大的表,必须在应用程序中向用户显示。现在,我正在获取所有记录并使用 Java Array 获取行 x 到 y 以通过 Ajax(Web 应用程序)发送回用户。
这种方法花费的时间比我想要的要多得多(尽管比一次将所有记录发送给用户要少)所以我只想查询我需要的记录。
任何帮助表示赞赏,谢谢!
select * from table limit 100,100
这样的事情可能会帮助你....
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>)
您可以使用 LIMIT,但也必须对行进行排序。
select *
from table
order by id -- very important
limit 100,100
如果您不对行进行排序,理论上您在更改起始行时始终可以获得相同的 100 行。这是因为无序查询可以按任意顺序返回行,并且会根据同时运行的其他查询以及内存中缓存的行等而有所不同。