首页 > 数据库 >Oracle数据库中的分页查询

Oracle数据库中的分页查询

时间:2024-07-17 15:20:21浏览次数:12  
标签:10 分页 数据库 查询 Oracle rownum where select

分页关键词rownum

和MySQL不同,MySQL中使用Limit进行分页实现,比如select * from t limit 10,5实现了查询(10,10+5]范围内的数据。Oracle数据库不支持limit关键字,但是有rownum这一虚拟字段。

rownum

  1. rownum是一个伪列,由数据库自己创建。
  2. rownum会在条件满足后、结果集确定后自动编排。

比如select * from t where rownum < 5可以实现前4条数据的查询。
但是rownum并不能简单的实现理想的分页,比如select * from t where rownum <= 15 and rownum > 10来实现上面的mysql同效果的语句是不可取的。因为rownum仅支持<、<=等。

一般情况下,使用rownum > 的语句会导致查询的结果为空。

  • 因为如上所说,rownum是一个伪列,且会在条件满足时编排,当 where rownum>1时,会依次对结果每行进行条件校验,第一行不满足就会舍弃,第二行又变成第一行导致rownum重新编排,以此类推,每一行都因不符条件被舍弃,返回的结果必定为空。
  • 由此推出,当执行where rownum > 0 or rownum >= 1 时,是可以正常返回结果集,只是没什么意义

实现分页查询

知道了rownum的用法就可以实现分页查询了,因为不能使用rownum > 的用法,因此可以通过以下这种方式实现分页

SELECT * FROM (
    SELECT td.* , ROWNUM RN FROM table_demo td WHERE ROWNUM <= 15) 
WHERE RN > 10

TIPS

  1. 因为是伪列,不能在select语句后使用rownum的别名,比如select td.* , rownum rn from table_demo td where rn <= 10
  2. 子句中的oredr by 可以接rownum别名
  3. 分页查询的嵌套查询中父语句将子句的结果集又重新做了查询,子集中的伪列在顶层查询中视为了真列,可以使用别名

标签:10,分页,数据库,查询,Oracle,rownum,where,select
From: https://www.cnblogs.com/chuimber/p/18307229

相关文章

  • thinkphp或laravel连接sql server 2014数据库
    问题描述:平时使用最多为mysql数据库,目前有项目数据库为sqlserver2014,列出连接全过程1.配置thinkphp或laravel的config/database.php文件后,配置sql对应的配置如下:'sqlsrv'=>['driver'=>'sqlsrv','host'=>'localhost','port'=>......
  • 【Oracle备份恢复】ORACLE归档日志清理策略
    1.定时任务制定$crontab-l#deletearchivelogbefore7days0002***sh/home/oracle/tkdba/del_arch_everyday.sh2.脚本内容脚本1:将包含$(date+%F)写到脚本中$cat/home/oracle/tkdba/del_arch_everyday.shsh/home/oracle/tkdba/del_arch.sh>>/home/oracle/t......
  • 如何在Oracle数据库中查询表和字段说明
    在Oracle数据库中,了解表和字段的说明对于数据库管理员和开发人员来说非常重要。这些信息有助于理解数据结构和设计意图。本文将介绍如何使用SQL查询语句获取Oracle数据库中所有表的名称及其说明,以及每个表中字段的名称、类型和说明。查询表说明在Oracle中,表的说明存储在ALL_TAB......
  • .NET开源、简单、实用的数据库文档生成工具
    前言今天大姚给大家分享一款.NET开源(MITLicense)、免费、简单、实用的数据库文档(字典)生成工具,该工具支持CHM、Word、Excel、PDF、Html、XML、Markdown等多文档格式的导出:DBCHM。支持的数据库SqlServer、MySQL、Oracle、PostgreSQL、DB2、SQLite。文档的内容都包含什么?序号|......
  • EFCore -CodeFirst模式 数据库使用SqLite
    首先安装nuget包:System.Data.SQLite和SQLite.CodeFirst,如下二图:然后在App.config中配置数据库连接字符串:<connectionStrings><addname="StuDB"connectionString="datasource=BoilerCalculator.db"providerName="System.Data.SQLite.EF6"/&......
  • C# 使用 DbDataReader 来访问数据库
    C#使用SqlDataAdapter和DataSet来访问数据库实体namespaceVipSoft.Entity{[Table(Name="PH_Prescription")]publicclassPrescription:Web.Core.Orm.Entity{[Column(Name="ID")]publicStringId{get;set;}......
  • oracle Mysql PostgreSQL 数据库的对比
    oracleMysqlPostgreSQL数据库的对比HOXJUN于2018-07-1318:44:25发布阅读量7.3k收藏11点赞数1版权Mysql的多表连接查询只支持NestLoop,不支持hashjoin和sortmergejoin,子查询性能较低,不支持sequenceMysql在执行过程中出现问题只产生很少的性能数据,难准确定位......
  • MySQL数据库基础教程(DDL、DML、DQL…)
    MySQL数据库基础教程:DDL、DML、DQL…文章目录1概述2数据库设计——DDL2.1数据库操作2.2表操作2.2.1约束2.2.2数据类型3数据库操作——DML4数据库查询——DQL4.1基本查询4.2条件查询4.3分组查询4.4排序查询4.5分页查询5多表设计5.1一对多5.2一对一5.3......
  • WHAT - 分页中基于索引和基于游标
    目录基于索引的分页(OffsetPagination)优点:缺点:基于游标的分页(CursorPagination)优点:缺点:适用场景示例代码基于索引的分页(React/TypeScript示例)基于游标的分页(React/TypeScript示例)在加载列表数据时,分页(pagination)是为了避免一次性加载大量数据,导致性能问题或用户......
  • 数据库设计文档一键生成
    1.引入MAVEN依赖<dependency><groupId>cn.smallbun.screw</groupId><artifactId>screw-core</artifactId><version>1.0.5</version></dependency>2.配置相关常量//可以设置Word或者Markdown格式......