浅析Mysql和Oracle分页的区别
作者:qq_41482600 发布时间:2024-01-23 16:38:49
MySQL使用limit进行分页
select * from stu limit m,n; // m=(pageIndex-1)*pageSize,n=pageSize
-- 返回总条,查询表添加字段sql_calc_found_rows
select sql_calc_found_rows a.* from AAA a limit m,n
-- found_rows单独查询总条数
select found_rows total;
第一个参数m表示起始行,第二个参数表示取多少行;
pageIndex表示页索引,即查询第几页的数据(从1开始),pageSize表示页大小,即一页最多显示多少行记录;
m= (2-1)*10+1=11,n=10,limit 11,10,表示从第11行开始取记录行(包含第11行),共取10行,也表示查询第2页的数据,这一页最多显示10行记录。
Oracle使用rownum进行分页
select * from(
select rownum rn,a.*,count(*) over() total from table_name a where rownum <= x
-- 结束行,x=pageIndex*pageSize
)
where rn >= y; -- 起始行,y=(pageIndex-1)*pageSize+1
-- 返回总条数
select count(*) over() total from AAA
>= y,<= x表示从第y行(起始行)~x行(结束行) 。
rownum只能比较小于,不能比较大于,因为rownum是先查询后排序的,例如你的条件为rownum>1,当查询到第一条数据,rownum为1,则不符合条件。第2、3…类似,一直不符合条件,所以一直没有返回结果。所以查询的时候需要设置别名,然后查询完成之后再通过调用别名进行大于的判断。
Mysql与Oracle级联查询
start with: 指定起始节点的条件
connect by: 指定父子行的条件关系
prior: 查询父行的限定符,格式: prior column1 = column2 or column1 = prior column2 and ...
nocycle: 若数据表中存在循环行,那么不添加此关键字会报错,添加关键字后,便不会报错,但循环的两行只会显示其中的第一条
循环行: 该行只有一个子行,而且子行又是该行的祖先行
connect_by_iscycle: 前置条件:在使用了nocycle之后才能使用此关键字,用于表示是否是循环行,0表示否,1 表示是
connect_by_isleaf: 是否是叶子节点,0表示否,1 表示是
level: level伪列,表示层级,值越小层级越高,level=1为层级最高节点
-- connect by: 指定父子行的条件关系
-- start with: 指定起始节点的条件
select c.bc_id,c.bc_name from org_busicorp c
connect by prior c.bc_pid = c.bc_id
start with c.bc_id = '001';
Mysql省市区级联查询
-- 二 * 查询
select c1.bc_id,c1.bc_name from org_busicorp c1 where c1.bc_pid = '00'
union
select c2.bc_id,c2.bc_name from org_busicorp c2
left join org_busicorp c1 on c1.bc_id = c2.bc_pid
where c1.bc_pid = '00'
-- 包含当前id
union
select c3.bc_id,c3.bc_name from org_busicorp c3 where c3.bc_id = '00'
Mysql递归函数
SELECT
ID.LEVEL,
DATA.*
FROM
(
SELECT
@ids AS _ids,
( SELECT @ids := GROUP_CONCAT( id ) FROM 表名 WHERE FIND_IN_SET( 父级 id字段, @ids ) ) AS cids,
@l := @l + 1 AS LEVEL
FROM
表名,
( SELECT @ids := '条件id', @l := 0 ) b
WHERE
@ids IS NOT NULL
) ID,
表名 DATA
WHERE
FIND_IN_SET( DATA.id, ID._ids )
ORDER BY
LEVEL,
id
Mysql与Oracle插入数据存在修改不存在新增
Mysql插入数据存在修改、不存在新增
insert into `subject`(subjectId,subjectName)
values('7','离散')
on duplicate key update subjectName='离散数学';
Oracle插入数据存在修改、不存在新增
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.字段=b.字段 --目标表别称a和源表别称b都不要省略
when not matched then insert (a.字段1,a.字段2……)values(b.字段1,b.字段2……) --目标表别称a可省略,源表别称b不可省略
源表b可能是一张表结构不同于a的表,有可能是一张构建相同表结构的临时表,也有可能是我们自己组起来的数据
merge into student a
using (select '7' as id from dual) s
on (a.id = s.id)
when matched then
update set a.student_name = '小明二号'
when not matched then
insert (id, student_name, fk_class) values ('7', '小明', '2')
来源:https://blog.csdn.net/qq_41482600/article/details/127815977
猜你喜欢
- 在python中,通过导入random库,就能使用randint 和 randrange这两个方法来产生随机整数。那这两个方法的区别在于什么
- 由于画图时plt.title()默认是显示英文,如果我们设置标题为中文,会无法显示,如图:在最前边设置这两条属性即可:plt.rcParam
- 前言Python 的random模块包含许多随机数生成器。random是Python标准库之一,直接导入即可使用。本文介绍random中常用
- 与大多数程序员一样,我经常需要标识存在于文本文档中的部件和结构,这些文档包括:日志文件、配置文件、分隔的数据以及格式更自由的(但还是半结构化
- 什么是钩子之前有转一篇关于回调函数的文章钩子函数、注册函数、回调函数,他们的概念其实是一样的。 钩子函数,顾名思义,就是把我们自己实现的ho
- 如下所示:from kafka import KafkaClientfrom kafka.producer import SimplePro
- 今天有个需要需要传递中文参数给URL但是在GBK环境下的脚本传递GBK的参数老是给我报UNICODE的解码错误。烦的很。所以我们果断选择用u
- 前言:在上篇博文中使用了matplotlib绘制了3D小红花,本篇博客主要介绍一下3D小红花的绘制原理。1. 极坐标系对于极坐标
- 什么是F型浏览?2006年4月,美国长期研究网站可用性的著名网站设计师杰柯柏·尼尔森(Jakob Nielsen)发表了一项《眼球轨迹的研究
- 导读:这篇论坛文章主要介绍了使用SQL Server升级顾问的具体步骤,详细内容请参考下文。微软提供了SQL Server 2008升级顾问
- 反馈说在选择时间时会出现遮挡选择器的情况,阻碍操作 如下图1,需要修改xadmin 文件 ,在widgets.py --->第28行添
- 介绍当创建一个应用程序时,通常希望能够告诉你的应用程序如何做某事。有两种流行的方法来完成这项任务,你可以让应用程序接受命令行参数,或者创建一
- 接口模块需要用 API 来提供对外服务的接口,当然也可以直接连数据库来取,但是这样就需要知道数据库的连接信息,不太安全,而且需要配置连接,所
- 本站收集的js实现的同步动态显示当前日期,时间和星期几的代码,我经常用在自己做的企业网站的后台,方便嘛。效果可以看看本站的首页,呵呵!而且代
- 目录OpenCV先决条件我们会在本文中涵盖7个主题读,写和显示图像imread():imshow():imwrite():读取视频并与网络摄
- 解决方案在安装包的路径的../database/state/cvu/cvu_prereq.xml文件尾部添加如下:<OPERATING
- 一、wordcloud库是什么?Python的wordcloud库是一个用于生成词云的Python包。它可以将一段文本中出现频率高的单词按其
- Python 运算符通常用于对值和变量执行操作。这些是用于逻辑和算术运算的标准符号。在本文中,我们将研究不同类型的 Python 运算符。&
- 1 创建JupyterLab运行脚本首先找到jupyter-lab命令的位置,一般在~/.local/bin/下,可以创建shell脚本au
- 这是个老话题了,之所以再拿出来说,是因为浏览器一直在进步,以前最好的方法现在不一定是最好的。1 如何进行字符串连接?首先让我们来回顾一下字符