2012-03-18 93 views
0
select top 1000 from table1. 

那我怎么继续接下来的1000和从表中去。有记录计数跨越数百万,我必须采取和处理信息在一个漫长的过程..所以,想用Cursor检索1000和下1000.任何其他最好的方式?如何检索前1000条记录,然后再检索1000条并继续?

+4

没有平台中立的方式来做到这一点。你使用的是什么RDBMS? – 2012-03-18 01:17:08

+0

和它的哪个版本? – 2012-03-18 01:20:11

+0

正在使用Nettezza,如果SQL服务器那么..!? – user1066231 2012-03-18 01:20:22

回答

1

如果您使用SQL Server 2005或更高,那么你可以使用ROW_NUMBER()函数:

Using ROW_NUMBER() to paginate your data with SQL Server 2005 and ASP.NET

但比利曾评论说,这不是一个普通的SQL函数。

游标是这样做的一个非常糟糕的方式,特别是如果你正在做断开querys,例如,如果用户通过结果分页。

如果你使用的是老式的SQL Server 2005,然后,或者你正在寻找一个通用的方法,那么常用的方法是通过选择结果到具有标识索引临时表,然后从该选择表索引> = pagenumber * pageSize & &索引<(pagenumber * pageSize)+ pageSize

+0

如果你我使用的是Netezza,我所知道的是它支持较老的SQL语法标准,所以它可能无法访问像row_number()这样的函数,但是您可以创建临时表。也就是说,如果您“再利用Netezza公司的平台,它会建议你有数据*很多*在那里,只为分页创建临时表可能是相当不利的。 – 2012-03-18 01:33:49

+0

Netezza公司有ROW_NUMBER()分析功能。 – redcayuga 2012-04-26 23:49:42

+0

感谢澄清,很高兴知道。 – 2012-04-26 23:59:23

相关问题