各种数据库分页查询SQL

2023-09-17 08:23:20

一、DB2:

     DB2分页查询

  SELECT * FROM (Select 字段1,字段2,字段3,rownumber() over(ORDER BY 排序用的列名 ASC) AS rn from 表名) AS a1 WHERE a1.rn BETWEEN 10 AND 20

      以上表示提取第10到20的纪录

  select * from (select rownumber() over(order by id asc ) as rowid from table where rowid <=endIndex ) where rowid > startIndex


  如果Order By 的字段有重复的值,那一定要把此字段放到 over()中

select * from ( select ROW_NUMBER() OVER(ORDER BY DOC_UUID DESC) AS ROWNUM, DOC_UUID, DOC_DISPATCHORG, DOC_SIGNER, DOC_TITLE from DT_DOCUMENT  ) a  where ROWNUM > 20 and ROWNUM <=30


增加行号,不排序

select * from ( select ROW_NUMBER() OVER() AS ROWNUM,t.*  from DT_DOCUMENT  t ) a


增加行号,按某列排序
 

select * from ( select ROW_NUMBER() OVER( ORDER BY DOC_UUID DESC ) AS ROWNUM,t.*  from DT_DOCUMENT  t ) a



  二、Mysql:

  最简单
 

  select * from table limit start,pageNum


  比如从10取20个数据
 

  select * from table limit 10,20



  三、Oracle:

  select * from (select rownum,name from table where rownum <=endIndex ) where rownum > startIndex


  例如从表Sys_option(主键为sys_id)中从第10条记录开始检索20条记录,语句如下:
 

  SELECT *

  FROM (SELECT ROWNUM R,t1.* From Sys_option where rownum < 30 ) t2

  Where t2.R >= 10



 四、 sql server:



分页方案一:(利用Not In和SELECT TOP分页)
语句形式:

SELECT TOP 10 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP 20 id
FROM TestTable
ORDER BY id))
ORDER BY ID


SELECT TOP 页大小 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP 页大小*页数 id
FROM 表
ORDER BY id))
ORDER BY ID



-------------------------------------

分页方案二:(利用ID大于多少和SELECT TOP分页)
语句形式:

SELECT TOP 10 *
FROM TestTable
WHERE (ID >
(SELECT MAX(id)
FROM (SELECT TOP 20 id
FROM TestTable
ORDER BY id) AS T))
ORDER BY ID


SELECT TOP 页大小 *
FROM TestTable
WHERE (ID >
(SELECT MAX(id)
FROM (SELECT TOP 页大小*页数 id
FROM 表
ORDER BY id) AS T))
ORDER BY ID

-------------------------------------

分页方案三:(利用SQL的游标存储过程分页)

create procedure XiaoZhengGe
@sqlstr nvarchar(4000), --查询字符串
@currentpage int, --第N页
@pagesize int --每页行数
as
set nocount on
declare @P1 int, --P1是游标的id
@rowcount int
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
select ceiling(1.0*@rowcount/@pagesize) as 总页数--,@rowcount as 总行数,@currentpage as 当前页
set @currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@currentpage,@pagesize
exec sp_cursorclose @P1
set nocount off


其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。
建议优化的时候,加上主键和索引,查询效率会提高。

通过SQL 查询分析器,显示比较:我的结论是:
分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句
分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用

更多推荐

Postman —— post请求数据类型

1、Postman中post的数据类型post中有以下数据类型1、form-data2、x-www-form-urlencoded3、raw4、binary2、Postman请求不同的post数据类型from-datamultipart/form-data,它将表单的数据组织成Key-Value形式,也可以上传文件,当

mybatis/mp批量插入非自增主键数据

文章目录前言一、mp的批量插入是假的二、真正的批量插入1.利用sql注入器处理2.采用自编码,编写xml批量执行生成内容如下:三问题问题描述问题原因问题解决粘贴一份,兼容集合替换原有文件总结自增与非自增区别:前言mybatis/mp在实际开发中是常用的优秀持久层框架,但是在非自增主键的时候,单条数据插入式可以的,当批量

[pai-diffusion]pai的easynlp的clip模型训练

EasyNLP带你玩转CLIP图文检索-知乎作者:熊兮、章捷、岑鸣、临在导读随着自媒体的不断发展,多种模态数据例如图像、文本、语音、视频等不断增长,创造了互联网上丰富多彩的世界。为了准确建模用户的多模态内容,跨模态检索是跨模态理解的重要任务,…https://zhuanlan.zhihu.com/p/528476134

大型语言模型:SBERT — 句子BERT

了解siameseBERT网络如何准确地将句子转换为嵌入简介Transformer在NLP领域取得了进化性的进步,这已不是什么秘密。基于Transformer,还发展出了许多其他机器学习模型。其中之一是BERT,它主要由几个堆叠的Transformer编码器组成。除了用于一系列不同的问题(例如情感分析或问答)之外,BE

云原生Kubernetes:K8S集群list-watch机制与 pod调度约束

目录一、理论1.K8S的list-watch机制2.亲和性二、实验1.指定调度节点2.节点亲和性3.亲和性和反亲和三、问题1.新生成pod一直为pending2.如何一次性删除pod和deployment3.pod亲和性资源报错4.pod反亲和性资源报错四、总结一、理论1.K8S的list-watch机制(1)概念Ku

前端防抖和节流

前端防抖和节流概述防抖:防止抖动,个人字面理解此处防的不是页面的抖动,而是用户手抖。为了防止用户快速且频繁的触发事件而导致多次执行事件函数,这样的场景有很多,比如监听滚动、鼠标移动事件onmousemove、频繁点击表单的提交按钮等等。节流:节约流量,为了节约流量,页面在一个时间周期内,只触发一次动作。所以节流的目的时

CSS笔记

选择器通配选择器*{}元素选择器元素{}类选择器.类名{}id选择器#id名{}复合选择器交集选择器/*p元素且类名为beauty的元素*/p.beauty{}.rich.beauty{}并集选择器又称分组选择器.rich,.beauty,.navtop,#myIMage{}后代选择器<!--选中后代中所有li--><

python小程序 图书馆图书借阅借还管理系统 mbc21

为设计一个安全便捷,并且使借阅者更好获取本图书借还信息,本文主要有安全、简洁为理念,实现借阅者快捷寻找图书借还信息,从而解决图书借还信息复杂难辨的问题。该系统以django架构技术为基础,采用python语言和MySQL数据库进行开发设计,通过对图书借还管理流程的分析,分析了其功能性和非功能性需求,设计了基于微信小程序

设计模式:桥接模式

目录组成部分代码实现优缺点总结桥接模式是一种软件设计模式,用于将抽象部分与其实现部分分离,使它们可以独立地变化。该模式通过创建一个桥接接口,将抽象类和实现类连接起来,从而使它们可以独立地进行修改和扩展。桥接模式可以提高系统的灵活性和可扩展性,同时也有助于简化系统的设计。组成部分桥接模式的各个组成部分包括:抽象部分(Ab

有了Spring为什么还需要SpringBoot呢

目录一、Spring缺点分析二、什么是SpringBoot三、SpringBoot的核心功能3.1起步依赖3.2自动装配一、Spring缺点分析1.配置文件和依赖太多了!!!spring是一个非常优秀的轻量级框架,以IOC(控制反转)和AOP(面向切面)为思想内核,极大简化了JAVA企业级项目的开发。虽然Spring的

docker - 分享

1.docker介绍:Docker是一种虚拟化技术,它允许你在一台机器上运行多个应用程序,每个应用程序都运行在一个独立的虚拟器中,互相之间不会干扰。这些容器使用了操作系统级别的虚拟化技术,课可以在同一物理机器上运行多个应用程序,同时每个容器又拥有自己独立的文件系统和资源管理。Docker可以让你快速地创建、部署、和复制

热文推荐