SQL分页

/*sql分页
pagenum 页数
pagerecord 每页记录数*/
--方法一:
select * from (SELECT t.student_code,
       t.name,
       t.sex,
       t.identity,
       row_number() over (order by t.student_code asc) as sortid
  FROM test01 T, test02 T1
 WHERE T.COLLEGE_CODE = T1.COLLEGE_CODE
   and t1.of_province = '62'
   and t.study_start = '20150901'
   )
   where sortid between &pagenum*&pagerecord-(&pagerecord -1)
   and &pagenum*&pagerecord;




--方法二:  
select *
  from (select t.*, rownum
          from (SELECT t.student_code,
                       t.name,
                       t.sex,
                       t.identity,
                       rownum as sortid
                  FROM test01 T, test02 T1
                 WHERE T.COLLEGE_CODE = T1.COLLEGE_CODE
                   and t1.of_province = '62'
                   and t.study_start = '20150901') t)
 where sortid between &pagenum * &pagerecord - (&pagerecord - 1) and
       &pagenum * &pagerecord;
### SQL分页查询的实现方式 #### MySQL分页查询 在MySQL中,可以通过`LIMIT`关键字来实现分页查询。其语法结构如下: ```sql SELECT * FROM tablename WHERE 查询条件 ORDER BY 排序条件 LIMIT ((页码-1)*页大小), 页大小; ``` 此方法的优点在于写法简单,易于理解和维护[^2]。然而,在实际应用中,如果页码和页大小较大,则可能导致性能显著下降,因为数据库需要跳过大量数据才能获取目标范围内的记录。 #### Oracle分页查询 对于Oracle数据库,可以利用`ROWNUM`伪列或者`ROW_NUMBER()`函数来进行分页操作。需要注意的是,直接使用`ROWNUM`可能会导致无法正确过滤结果集,因此通常建议通过子查询的方式先计算行号再进行筛选。 以下是基于`ROW_NUMBER()`的一个例子: ```sql WITH PaginationCTE AS ( SELECT *, ROW_NUMBER() OVER (ORDER BY SortingColumn ASC) AS RowNum FROM YourTableName ) SELECT * FROM PaginationCTE WHERE RowNum BETWEEN :StartRow AND :EndRow; ``` #### SQL Server分页查询 针对SQL Server版本的不同,其实现分页的方法也有所区别。如果是SQL Server 2005或更高版本,推荐采用Common Table Expressions(CTEs)联合`ROW_NUMBER()`功能完成这一需求[^3]: 示例代码展示如下: ```sql DECLARE @PageSize INT = 10; -- 每页显示条目数量 DECLARE @PageNumber INT = 2; -- 当前页面编号 ;WITH PaginationCTE AS ( SELECT Column1, Column2, ROW_NUMBER() OVER (ORDER BY SortingColumn ASC) AS RowNum FROM YourTableName ) SELECT Column1, Column2,... FROM PaginationCTE WHERE RowNum BETWEEN ((@PageNumber - 1) * @PageSize + 1) AND (@PageNumber * @PageSize); ``` #### Spring Boot中的分页支持 除了原生SQL外,现代开发框架如Spring Boot提供了更高级别的抽象层用于简化分页逻辑处理过程。开发者只需定义好实体类映射关系以及Repository接口继承JpaRepository后调用内置findPageByXXX系列方法即可轻松达成目的[^4]。 例如: ```java public interface UserRepository extends JpaRepository<User, Long> { } // Controller Layer Code Snippet Pageable pageableRequest = PageRequest.of(pageNo, pageSize, Sort.by("name").ascending()); userRepository.findAll(pageableRequest).getContent(); ``` 以上介绍了几种常见关系型数据库管理系统下的基本分页技术及其特点比较分析。具体选用哪种方案取决于项目所处环境和技术栈等因素综合考量决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值