数据库分页查询语句(sql、access)

--sql
select top 10 *,ROW_NUMBER() over (order by id asc,name asc) as rows 
from student 
where name like '%4%'

select top 10 * from (select *,ROW_NUMBER() over (order by id asc, name asc) as rows 
from student 
where name like '%4%') as tb2 
where rows>10

select top 10 *,ROW_NUMBER() over (order by id desc,name desc) as rows 
from student 
where name like '%4%'

select top 10 * from (select *,ROW_NUMBER() over (order by id desc,name desc) as rows 
from student 
where name like '%4%') as tb2 
where rows>10

--sql、access
select top 10 * from student where name like '%4%' order by id asc,name asc

select top 10 * from student where name like '%4%' 
and id not in (select top 10 id from Student where name like '%4%' order by id asc,name asc) 
order by id asc,name asc

select top 10 * from Student where name like '%4%' order by id desc,name desc

select top 10 * from student where name like '%4%' 
and id not in (select top 10 id from Student where name like '%4%' order by id desc,name desc) 
order by id desc,name desc

--sql分页存储过程
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[paging]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[paging]
GO
CREATE PROCEDURE [paging]
@tableName nvarchar(32),--表名
@pageSize int=10,--每页显示数据
@pageIndex int=1,--当前页数
@strFields nvarchar(max),--字段
@strJoin nvarchar(max),--联接
@strWhere nvarchar(max),--筛选
@strOrderBy nvarchar(max)--排序
AS
 declare @strSQL   nvarchar(max) 
 declare @indexStart int
 set @indexstart=@pageIndex*@pageSize      
 set @strSQL=' select top '+convert(nvarchar(10),@PageSize)+' *from (select '+@strFields+' over ('+@strOrderBy+') as rowNum 
from '+@tableName+' '+@strJoin+' '+@strWhere+') as tb where rowNum>'+convert(nvarchar(10),@indexstart)
 print @strSQL
 exec (@strSQL)
GO
--执行存储过程
exec paging   
'dbo.studentDemo',  
5,  
0,  
'dbo.studentDemo.StudentId,dbo.studentDemo.StudentName,dbo.classDemo.ClassName,row_number()',  
'inner join dbo.classDemo on dbo.studentDemo.ClassId=dbo.classDemo.ClassId',  
'where 1=1 and dbo.studentDemo.StudentName like ''%S%''',  
'order by dbo.studentDemo.StudentId asc' 

--运行生成sql:
 select top 5 *from (
 select 
 dbo.studentDemo.StudentId
 ,dbo.studentDemo.StudentName
 ,dbo.classDemo.ClassName
 ,row_number() over (order by dbo.studentDemo.StudentId asc) as rowNum 
 from dbo.studentDemo 
 inner join dbo.classDemo 
 on dbo.studentDemo.ClassId=dbo.classDemo.ClassId 
 where 1=1 and dbo.studentDemo.StudentName like '%S%'
) as tb where rowNum>5


 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值