SQL 指定查询N行到N行的语句怎么写?
test表中有N行记录,有3个字段:name,sex,address.现在我想同过查询表中的,第N行到第N行的记录,比如是只想查询到第10行到第30行的纪录,怎么用sel...
test表中有N行记录,有3个字段:name,sex,address.
现在我想同过查询表中的,第N行到第N行的记录,比如是只想查询到第10行到第30行的纪录,怎么用select 语言 查询出来呢?请用SQL语言,谢谢! 展开
现在我想同过查询表中的,第N行到第N行的记录,比如是只想查询到第10行到第30行的纪录,怎么用select 语言 查询出来呢?请用SQL语言,谢谢! 展开
展开全部
用分页的方法
这是我分页的存储过程
if exists(select * from sysobjects where name= 'pg_view')
drop proc pg_view
go
create proc pg_view
@pageSize int=10, --每页显示
@pageIndex int=1, --页面索引
@pageKey varchar(100), --查询字段名
@pageSort varchar(50), --排序字段名
@pageTable nvarchar(50), --表名
@pagetotal int output --总页数
as
declare @total int,@sql nvarchar(200)
set @sql=N'select @total2= count(*) from ' + @pageTable
EXEC SP_EXECUTESQL @sql, N' @total2 BIGINT OUTPUT', @total OUTPUT ----@total2 BIGINT OUTPUT 设置参数
--求总页面
if(@total<@pageSize) --总行数小于每页显示的行数则总页数等于 1
set @pagetotal=1
else
begin
if((@total%@pageSize)=0) --总行数能否被每页显示的行数整除
begin
set @pagetotal=@total/@pageSize
end
else
begin
set @pagetotal=@total/@pageSize+1
end
end
if(@pagetotal<@pageIndex) --当总页数小于查询的页数时eg:如果一共5页用户输入6页
set @pageIndex=@pagetotal
declare @exec nvarchar(1000),@pageRemove int
set @pageRemove=(@pageIndex-1)*@pageSize --查询当前页面之前的数据
set @exec=N'select top ' + convert(nvarchar(10),@pageSize) + @pageKey + N' from '+ @pageTable+N' where '+ @pageSort+
N' not in (select top '+ convert(nvarchar(10),@pageRemove)+ @pageSort +N' from '+ @pageTable+
N' order by '+ @pageSort+ N' desc) order by '+@pageSort+N' desc'
exec (@exec)
go
declare @a int
exec pg_view 21,5,'*','number','test',@a output
print @a
这是我分页的存储过程
if exists(select * from sysobjects where name= 'pg_view')
drop proc pg_view
go
create proc pg_view
@pageSize int=10, --每页显示
@pageIndex int=1, --页面索引
@pageKey varchar(100), --查询字段名
@pageSort varchar(50), --排序字段名
@pageTable nvarchar(50), --表名
@pagetotal int output --总页数
as
declare @total int,@sql nvarchar(200)
set @sql=N'select @total2= count(*) from ' + @pageTable
EXEC SP_EXECUTESQL @sql, N' @total2 BIGINT OUTPUT', @total OUTPUT ----@total2 BIGINT OUTPUT 设置参数
--求总页面
if(@total<@pageSize) --总行数小于每页显示的行数则总页数等于 1
set @pagetotal=1
else
begin
if((@total%@pageSize)=0) --总行数能否被每页显示的行数整除
begin
set @pagetotal=@total/@pageSize
end
else
begin
set @pagetotal=@total/@pageSize+1
end
end
if(@pagetotal<@pageIndex) --当总页数小于查询的页数时eg:如果一共5页用户输入6页
set @pageIndex=@pagetotal
declare @exec nvarchar(1000),@pageRemove int
set @pageRemove=(@pageIndex-1)*@pageSize --查询当前页面之前的数据
set @exec=N'select top ' + convert(nvarchar(10),@pageSize) + @pageKey + N' from '+ @pageTable+N' where '+ @pageSort+
N' not in (select top '+ convert(nvarchar(10),@pageRemove)+ @pageSort +N' from '+ @pageTable+
N' order by '+ @pageSort+ N' desc) order by '+@pageSort+N' desc'
exec (@exec)
go
declare @a int
exec pg_view 21,5,'*','number','test',@a output
print @a
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询