用sql语句查询从N条到M条的记录



//说明:下面的代码是我转一位高手的,希望对大家能有所收或。。
//再声明一下:如果表名与字段名在整个过程中不再变化,则可以用以下模式:
//=================================
@tableName as varchar(20)='leaveWord',--表名
@fieldList as varchar(1000)='*',--字段列表
@startIndex as varchar(10),--开始
@endIndex as varchar(10)--结束

==================================//

CREATE PROCEDURE p_GetBetweenData
@tableName as varchar(20),--表名
@fieldList as varchar(1000),--字段列表
@startIndex as varchar(10),--开始
@endIndex as varchar(10)--结束
AS
Declare @strSql as Varchar(4000) --定义sql字符串

--将原表数据复制到临时表
begin
 set @strSql='SELECT TOP '+@endIndex+' * INTO tempTB FROM '+@tableName
 --print @strSql
 exec(@strSql)
end

--修改临时表结构
begin
  ALTER TABLE tempTB ADD _ID int IDENTITY
end

--查询出指定的记录,这里要注意一下,如果原表中有_id这个字段(无论大小与)下面的那个_ID字段名都要改一改
begin
 set @strSql='SELECT '+ @fieldList + ' FROM tempTB WHERE _ID>='+@startIndex+' and _ID<='+@endIndex
 --print @strSql
 exec(@strSql )
end

--删除临时表
begin
 drop table tempTB
end

GO

//下面这种方法。。也可以。。只是在对临时表进行操作时有点不一样。。
 

CREATE PROCEDURE p_GetBetweenData
@tableName as varchar(20),--表名
@fieldList as varchar(1000),--字段列表
@startIndex as varchar(10),--开始
@endIndex as varchar(10)--结束
AS
Declare @strSql as Varchar(4000) --定义sql字符串

--将原表数据复制到临时表
begin

 set @strSql='SELECT TOP '+@endIndex+' 0 AS _ID,* INTO tempTB FROM '+@tableName
 --print @strSql
 exec(@strSql)
end

--更新列编号,这里要注意一下,如果原表中有_id这个字段(无论大小与)下面的那个_ID字段名都要改一改

begin
Declare @i int
set @i=0
update tempTB set @i=@i+1,_ID=@i
end

--查询出指定的记录
begin
 set @strSql='SELECT '+ @fieldList + ' FROM tempTB WHERE _ID>='+@startIndex+' and _ID<='+@endIndex
 --print @strSql
 exec(@strSql )
end

--删除临时表
--begin
 --drop table tempTB
--end

GO

原文地址:https://www.cnblogs.com/wantingqiang/p/1206646.html