在一张表中查询20行20行的记录应该怎么做?在线等
比如我一张表有100条记录!分成5个20行记录分别查询出来!应该怎么做?在线等!
------解决方案--------------------SELECT TOP 20 * 
 FROM TestTable 
 WHERE (ID NOT IN 
 (SELECT TOP 20 id 
 FROM TestTable 
 ORDER BY id)) 
 ORDER BY ID 
 SELECT TOP 页大小 * 
 FROM TestTable 
 WHERE (ID NOT IN 
 (SELECT TOP 页大小*页数 id 
 FROM 表 
 ORDER BY id)) 
 ORDER BY ID 
 ------------------------------------- 
 分页方案二:(利用ID大于多少和SELECT TOP分页) 
 语句形式: 
 SELECT TOP 20 * 
 FROM TestTable 
 WHERE (ID >  
 (SELECT MAX(id) 
 FROM (SELECT TOP 20 id 
 FROM TestTable 
 ORDER BY id) AS T)) 
 ORDER BY ID 
 SELECT TOP 页大小 * 
 FROM TestTable 
 WHERE (ID >  
 (SELECT MAX(id) 
 FROM (SELECT TOP 页大小*页数 id 
 FROM 表 
 ORDER BY id) AS T)) 
 ORDER BY ID 
------解决方案--------------------使用分页存储过程:   
 查询第X页,每页Y条记录 
 最基本的处理方法(原理): 
 如果表中有主键(记录不重复的字段也可以),可以用类似下面的方法,当然y,(x-1)*y要换成具体的数字,不能用变量: 
 select top y * from 表 where 主键 not in(select top (x-1)*y 主键 from 表)
------解决方案-------------------------一个简单的分页存储过程 ,用临时表--- 
 create proc p1 @page int 
 as 
 select c1=IDENTITY(int, 1,1),* into #temp from syscolumns  ---这个syscolumns换成你的表名 
 select top 20 * from #temp where c1 between @page*20-19 and @page*20 
 drop table #temp     
 ---执行-- 
 exec p1 1
------解决方案-------------------------一个简单的分页存储过程 ,用临时表--- 
 create proc p1 @page int 
 as 
 select c1=IDENTITY(int, 1,1),* into #temp from syscolumns  ---这个syscolumns换成你的表名 
 select top 20 * from #temp where c1 between @page*20-19 and @page*20 
 drop table #temp     
 ---执行-- 
 exec p1 1 
 exec p1 2 
 exec p1 3 
 exec p1 4 
 exec p1 5   
------解决方案------------------------这个是老大写的一个通用分页存储过程,供参考 --- 
 CREATE PROC sp_PageView 
 @tbname     sysname,            --要分页显示的表名 
 @FieldKey   nvarchar(1000),      --用于定位记录的主键(惟一键)字段,可以是逗号分隔的多个字段 
 @PageCurrent int=1,              --> 0表示要显示的页码,如果为0表示仅清理缓存数据的临时表,不返回数据,其他值代表重建缓存数据的临时表 
 @PageSize   int=10,             --每页的大小(记录数) 
 @FieldShow  nvarchar(1000)= ' ',    --以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段 
 @Where     nvarchar(1000)= ' ',    --查询条件 
 @UserName  sysname= ' ',         --调用查询的用户名 
 @PageCount  int OUTPUT        --总页数 
 AS 
 SET NOCOUNT ON 
 --检查对象是否有效 
 IF OBJECT_ID(@tbname) IS NULL 
 BEGIN 
 	RAISERROR(N '对象 "%s "不存在 ',1,16,@tbname) 
 	RETURN 
 END 
 IF OBJECTPROPERTY(OBJECT_ID(@tbname),N 'IsTable ')=0 
 	AND OBJECTPROPERTY(OBJECT_ID(@tbname),N 'IsView ')=0 
 	AND OBJECTPROPERTY(OBJECT_ID(@tbname),N 'IsTableFunction ')=0 
 BEGIN 
 	RAISERROR(N ' "%s "不是表、视图或者表值函数 ',1,16,@tbname) 
 	RETURN 
 END   
 --分页字段检查 
 IF ISNULL(@FieldKey,N ' ')= ' ' 
 BEGIN 
 	RAISERROR(N '分页处理需要主键(或者惟一键) ',1,16) 
 	RETURN 
 END   
 --其他参数检查及规范 
 IF ISNULL(@PageSize,0) <1 SET @PageSize=10 
 IF ISNULL(@FieldShow,N ' ')=N ' ' SET @FieldShow=N '* ' 
 IF ISNULL(@Where,N ' ')=N ' ' 
 	SET @Where=N ' ' 
 ELSE 
 	SET @Where=N 'WHERE ( '+@Where+N ') '   
 --分页数据缓存临时表状态检测 
 DECLARE @tempTable sysname,@TempField sysname,@TempTableDate datetime 
 SET @tempTable=QUOTENAME(N '## ' 
 	+RTRIM(LEFT(HOST_NAME(),50)) 
 	+N '_ '+RTRIM(LEFT(CASE WHEN ISNULL(@UserName,N ' ')=N ' ' THEN SUSER_SNAME() EL