浅析Mysql和Oracle分页的区别 oracle的分页语句

   2023-02-07 学习力0
核心提示:目录MySQL使用limit进行分页Oracle使用rownum进行分页Mysql与Oracle级联查询Mysql省市区级联查询Mysql与Oracle插入数据存在修改不存在新增MySQL使用limit进行分页select * from stu limit m,n; // m=(pageIndex-1)*pageSize,n=pageSize-- 返回总条,查询表添加

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级联查询

  1. start with: 指定起始节点的条件
  2. connect by: 指定父子行的条件关系
  3. prior: 查询父行的限定符,格式: prior column1 = column2 or column1 = prior column2 and ...
  4. nocycle: 若数据表中存在循环行,那么不添加此关键字会报错,添加关键字后,便不会报错,但循环的两行只会显示其中的第一条
  5. 循环行: 该行只有一个子行,而且子行又是该行的祖先行
  6. connect_by_iscycle: 前置条件:在使用了nocycle之后才能使用此关键字,用于表示是否是循环行,0表示否,1 表示是
  7. connect_by_isleaf: 是否是叶子节点,0表示否,1 表示是
  8. 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与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
 
标签: Mysql Oracle 分页
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • mysql_pconnect的水挺深,apache下的数据库长连
      php的mysql持久化连接,美好的目标,却拥有糟糕的口碑,往往令人敬而远之。这到底是为啥么。近距离观察后发现,这家伙也不容易啊,要看apache的脸色,还得听mysql指挥。  对于做为apache模块运行的php来说,要实现mysql持久化连接,首先得取决于apache这个
    02-10
  • linux下mysql开启远程访问权限及防火墙开放3306端口
    linux下mysql开启远程访问权限及防火墙开放3306
    开启mysql的远程访问权限默认mysql的用户是没有远程访问的权限的,因此当程序跟数据库不在同一台服务器上时,我们需要开启mysql的远程访问权限。主流的有两种方法,改表法和授权法。相对而言,改表法比较容易一点,个人也是比较倾向于使用这种方法,因此,这
    02-10
  • php+apache+mysql
    apache2.4.7+php5.4[http://www.myhack58.com/Article/sort099/sort0100/2012/35578.htm] apachehttpd.conf:DocumentRoot:网站根目录,默认/htdocsDirectoryIndex:默认显示的文件名.默认index.html,可以有多个值.如index.html index.jsp.用空格分开Listen:端
    02-10
  • Windows下搭建apache+mysql+php开发环境
    Windows下搭建apache+mysql+php开发环境
      最近因在windows环境下搭建php开发环境遇到了各式各样的问题,故在此加以归纳总结。目的有二,一是为了避免以后再次遇到类似的问题,二是为需要的同学提供启示和借鉴。  一:下载需要的软件apache   httpd-2.2.22-win32-x86-no_ssl.msimysql     mys
    02-10
  • PHP从零开始:Apache+PHP+MySQL安装配置
    初学一个东西,最怕的恐怕就是环境配置了。我就经常碰到这样的事而浪费很多时间。  今天在网上搜索到一个图文并茂的Apache+PHP+MySQL教程,按着一步一步安装和配置下来,很快就搞定了!这里贴一下教程的地址,希望其他初学者也可以很快搞定~http://tech.163
    02-10
  • Linux测试环境搭建apache+mysql+php
    LinuxRed Hat Enterprise Linux Server release 5.4 (Tikanga)Kernel \r on an \mApache +Mysql+php搭建准备:Apache postgresql-libs-8.1.11-1.el5_1.1.i386.rpmapr-1.2.7-11.el5_3.1.i386.rpmapr-util-1.2.7-7.el5_3.2.i386.rpmhttpd-2.2.3-31.el5.i386.rpm
    02-10
  • windows支持apache、mysql、php集成环境推荐wam
    对英文不感冒的同学很容易下载到更新包,而且官方的下载速度很慢,此文件为官方原版下载,现在分享给大家。链接:https://pan.baidu.com/s/1LYyJi6FddvkQQNrLp4L6Ww 提取码:edsaMD5: 4C32136656EB25E2951E1539D264339ESHA1: 15EAC178B27EE5298883DC3BA351B81
    02-10
  • 如何搭建lamp(CentOS7+Apache+MySQL+PHP)环境
    如何搭建lamp(CentOS7+Apache+MySQL+PHP)环境在网上搜资料,自己在本地虚拟机上尝试搭建,弄了整整一天一夜,终于弄好了.网上的资料,虽然很多,但大多都是重复的,拿去试了之后,又很多都不能得到正确的结果.最终找到了适合我的linux环境的搭建方式;在这里贴出来:这
    02-10
  • CentOS 6下搭建Apache+MySQL+PHP+SSL
    网上的一些文章都已经比较老了,现在版本高了之后,其实配置是很省力的(不考虑什么负载的话)分享全过程,出了文中提到的安装epel rpmfushion 源指令不同外,其他的过程也适用与Centos 51.安装CentOS 6 ,可以选择最小安装,也可以安装桌面2.升级系统yum upda
    02-10
  • lnamp完整版[linux+apache2.4+php5.6.6+mysql5.
    Lnamp环境安装实录将采用的开源软件:Apache [WEB动态脚本服务器,做nginx的反向代理8080端口]Tengine [WEB静态文件服务器80端口]MySQL PHP 1.Apache安装A.apr安装wget -c http://mirror.bjtu.edu.cn/apache/apr/apr-1.5.1.tar.gztar -zxvf apr-1..5.tar.gzcd
    02-10
点击排行