MySQL与Oracle的分页

2023-09-16 19:30:25

MySQL与Oracle的分页

当我们通过SQL去查询一个结果集的时候,并不需要查看所有行,可能只是查看前几行,或者中间的几行。则需要像MySQLlimitOracleROWNUMFETCH NEXT来实现。

MySQL

语法

SELECT * FROM table_name LIMIT [offset,] row_count;

LIMIT 是MySQL中用于限制返回结果行数的关键字。

  • table_name 是你要查询的表名。
  • row_count 是你要返回的行数。
  • offset 是可选的,表示从查询结果的第几行开始返回,通常用于分页查询。

实例

-- 写法1 不携带OFFSET
SELECT * FROM TEST LIMIT 10; -- 返回前10行

-- 写法2 携带OFFSET 但携带OFFSET关键字
SELECT * FROM TEST LIMIT 10,5; -- 跳过前10行后,再返回5行

-- 写法3 携带OFFSET 并携带OFFSET关键字
SELECT * FROM TEST LIMIT 10 OFFSET 5; -- 跳过前5行后,再返回10行

不同的写法对应参数的顺序是不一致的这个需要注意。

Oracle

ROWNUM

语法

首先我们要这个ROWNUM是这个什么?

在 Oracle 数据库中,ROWNUM 是一个伪列(虚拟列),用于标识返回结果集中的行号。

ROWNUM 是在查询结果返回后才赋值的,它的值是按照查询结果的顺序逐行递增的。

通常来说,使用ROWNUM我们尽量还是需要子查询来配合使用,因为如果当使用ORDER BY去进行排序的话,ROWNUM是会根据排序后的结果集重新生成的,这个时候这个行号就不是原来的行号了。另外当我们直接使用WHERE ROWNUM > 1他会导致结果集未空的情况,**因为ROWNUM 是在查询结果返回后才赋值的。**所以直接使用WHERE 则就直接过滤掉了。

实例
-- 返回从10行后的所有数据
SELECT * FROM (
    SELECT ROWNUM ROW_NUM FROM Test 
)  where ROW_NUM > 10

-- 返回从11行-20的数据
SELECT * FROM (
    SELECT ROWNUM ROW_NUM FROM Test 
)  where ROW_NUM > 10 AND ROW_NUM <= 20

FETCH NEXT(Oracle 12c及以上版本可用)

FETCH NEXTFETCH FIRST 都是返回查询结果中的前 n 行。两个关键字同义。

语法
SELECT * FROM table_name
OFFSET n ROWS
FETCH NEXT m ROWS ONLY;
  • OFFSET n ROWS:跳过前 n 行,即从第 n+1 行开始返回结果。

  • FETCH NEXT m ROWS ONLY:返回接下来的 m 行。

实例
SELECT ROWNUM FROM Test FETCH NEXT 10 ROWS ONLY; -- 返回前10行

# 这里是MySQL没法通过只使用OFfSET使用的,但是可以 limti 10,100000000 来实现😂 虽然不优雅但可以实现
SELECT ROWNUM FROM Test OFFSET 10 ROWS;   -- 跳过10行,返回之后的所有行

SELECT ROWNUM FROM Test OFFSET 5 ROWS FETCH NEXT 10 ROWS ONLY;  -- 跳过前5行后,再返回10行
更多推荐

数据优化与可视化:3D开发工具HOOPS在BIM模型轻量化中的作用分析

在建筑和工程领域,BIM(建筑信息建模)是一种重要的数字化工具,但大型BIM模型往往需要大量的计算资源和存储空间。为了解决这一问题,HOOPS技术成为了一种关键工具,可以帮助实现BIM模型轻量化,提高性能、减小资源占用,从而加速项目进展。本文将探讨HOOPS如何帮助BIM模型实现轻量化的方式以及其在建筑和工程领域的重要

14:00面试,14:06就出来了,问的问题有点变态。。。

从小厂出来,没想到在另一家公司又寄了。到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到5月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%,这下搞的饭都吃不起了。还在有个朋友内推我去了一家互联网公司,兴冲冲见面试官,没想到一道题把我给问死了:如果模块请求http改为了h

Linux系统下建立Socket聊天服务器

目录1.服务器结构2.各模块函数2.1socket函数2.2bind函数2.3Listen函数2.4accept函数2.5接收发送函数2.6close函数2.7connect函数3代码段3.1服务器代码1.服务器结构使用socket的API函数编写服务端和客户端程序的步骤图示:2.各模块函数服务器:2.1socket函

滚雪球学Java(37):深入了解Java方法作用域和生命周期,让你写出更高效的代码

🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!前言在Java开发中,方法是程序的基本构建块之一。在编写Java代码时,必须了解Java方法的作用域和生命周期。这将有助于您更好地编写高效的Java代码。摘要本文将深入了解J

Linux虚拟化指南:构建虚拟化环境

虚拟化技术在计算领域具有广泛的应用,能够提高硬件资源的利用率、降低维护成本,并实现灵活的资源分配。Linux作为一种开源操作系统,在虚拟化方面也有多种选择和工具可供使用。下面将介绍如何构建Linux虚拟化环境,并提供一些建议和最佳实践。一、选择虚拟化平台1、KVM(Kernel-basedVirtualMachine)

QT 信号与槽

QT核心便是信号与槽,通过信号将数据在界面和类中,在本类和其他类中发送和接收。信号负责发送数据(也可以单纯的发送信号),槽负责接收。系统自定义的槽在相应组件上单机右键转到槽即可看见这列表,例如:一般按钮事件的点击(clicked),松开(released),按下(pressed)等。选择相应的槽,那么它会自动帮你做上个

基于SpringBoot的民宿管理平台系统的设计与实现

博主主页:一季春秋博主简介:专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。主要内容:毕业设计(Java项目、小程序等)、简历模板、学习资料、面试题库、技术咨询。🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻不然下次找不到哟Sp

VR虚拟仿真在旅游课堂教学演示

首先,VR虚拟仿真能够为学生提供逼真的旅游体验。传统的旅游课堂教学主要以图片、文字和视频为主要教学工具,这无法给学生带来身临其境的感觉。而VR技术能够通过360度全景视角、立体声音和触觉反馈等功能,将学生置身于虚拟的旅游场景中。无论是登上古老的埃及金字塔,在巴黎卢浮宫欣赏名画,还是漫步在纽约时代广场的繁华街头,学生可以

Mysql高级——索引优化和查询优化(2)

5.排序优化5.1排序优化问题:在WHERE条件字段上加索引,但是为什么在ORDERBY字段上还要加索引呢?优化建议:SQL中,可以在WHERE子句和ORDERBY子句中使用索引,目的是在WHERE子句中避免全表扫描,在ORDERBY子句避免使用FileSort排序。当然,某些情况下全表扫描,或者FileSort排序不

关于安卓SVGA浅尝(二)加载数据

关于安卓SVGA浅尝(二)加载数据相关链接SVGA官网SVGA-github说明文档背景项目开发,都会和动画打交道,动画的方案选取,就有很多选择。如Json动画,svga动画,gif等等。各有各的优势。目前项目中用到了svga的动画,因此,就有了这一系列的文章。实现对于svga的加载方法,有以下几种:(1)decode

VR全景智慧文旅解决方案,助力文旅产业转型升级

引言:随着科技的不断发展,虚拟现实(VR)技术正逐渐展露其影响力,改变着旅游业。VR全景智慧文旅解决方案也应运而生,将传统旅游的体验形式从线下扩展到了线上,带来了不一般的文旅体验。一.VR全景技术的基础VR全景技术是通过结合虚拟现实和全景摄影技术来模拟现实世界的方法。通过智能设备,游客可以在任何时间,任何地点进入逼真的

热文推荐