Oracle子查询与分页查询
子查询
子查询是指嵌套在查询语句中的查询语句。子查询出现的位置一般为条件语句,如WHERE条件。Oracle会首先执行子查询,然后执行父查询。
子查询整个结果集会和父结果集中每个结果进行预算,通常效率比较低,因此建议在实际应用中如果能够不使用子查询则尽量较少使用。
查询复制填充表
查询复制数据填充新建表
CREATE TABLE backupStu AS SELECT name,age FROM students2
查询复制数据填充存在表
INSERT INTO copyTab SELECT name,age FROM students2
分页查询
分页的目的在于将过多符合条件的结果记录按照自定义数量显示数据,从而减少内存开销并提高查询效率
Oracle中通常使用联合、子查询以及结合伪列rowid和rownum实现对结果进行分页
minus结合rownum查询分页
select * from students2 where rownum <=5 minus
select * from students2 where rownum <1 --第1页
select * from students2 where rownum <=10 minus
select * from students2 where rownum <6 --第2页
select * from students2 where rownum <=15 minus
select * from students2 where rownum <11 --第3页
select * from students2 where rownum <=20 minus
select * from students2 where rownum <16 --第4页
子查询结合rownum查询分页
select * from(
(select rownum rn,s2.* from (select * from salary )s2 where rownum <=5)) s3
where s3.rn >=1; --第1页
select * from(
(select rownum rn,s2.* from (select * from salary )s2 where rownum <=10)) s3
where s3.rn >=6; --第2页
select * from(
(select rownum rn,s2.* from (select * from salary )s2 where rownum <=15)) s3
where s3.rn >=11; --第3页
--子查询 --哪些部门没有员工 select ID 部门id,NAME 部门名称 FROM dep_table where id not in (select dep_id from emp_tab ); --哪些员工发放过工资 select ID,NAME FROM emp_tab WHERE ID IN (select emp_id from salary); --哪些员工未发放过工资 select ID,NAME FROM emp_tab WHERE ID NOT IN (select emp_id from salary); --查询数据填充新建表 SELECT * FROM salary; DROP TABLE backupsalary; CREATE TABLE backupSalary AS SELECT emp_id ID,grantdate 发放年月,should 应发工资 FROM salary s; select 应发工资 from backupSalary; --查询数据填充已存在的表 CREATE TABLE back_sal ( ID NUMBER NOT NULL PRIMARY KEY, yingfa NUMBER ) INSERT INTO back_sal select ID,salary.should from salary; select * from back_sal; --minus 结合rownum实现分页查询 select * from salary; --第1页 select * from salary where rownum <=5 MINUS SELECT * FROM salary WHERE ROWNUM<1; --第2页 select * from salary where rownum <=10 MINUS SELECT * FROM salary WHERE ROWNUM<6; --第3页 select * from salary where rownum <=15 MINUS SELECT * FROM salary WHERE ROWNUM<11; --子查询结合rownum实现分页查询 select * from( (select rownum rn,s2.* from (select * from salary )s2 where rownum <=5)) s3 where s3.rn >=1; --第1页 select * from( (select rownum rn,s2.* from (select * from salary )s2 where rownum <=10)) s3 where s3.rn >=6; --第2页 select * from( (select rownum rn,s2.* from (select * from salary )s2 where rownum <=15)) s3 where s3.rn >=11; --第3页 --使用子查询结合rowid,rownum not in语句实现分页 select * from salary where rowid not in (select rowid from salary where rownum<1) and rownum <=5; --第一页 select * from salary where rowid not in (select rowid from salary where rownum<6) and rownum <=5; --第二页 select * from salary where rowid not in (select rowid from salary where rownum<11) and rownum <=5; --第三页
原文地址:https://www.cnblogs.com/zengyu1234/p/15264567.html
- [快学Python3]解析器
- [快学Python3]函数
- [快学Python3]循环控制
- [linux][kprobe]谁动了我的文件---使用kprobe找到目标进程
- [快学Python3]if条件控制
- codeforces 767A Snacktower(模拟)
- [快学Python3]Sets(集合)
- [nptl][rwlock]pthread rwlock原理分析
- [快学Python3]Dictionary(字典)
- [快学Python3]List(列表)
- [快学Python3]Tuple(元组)
- HDU 1248 寒冰王座(完全背包裸题)
- [快学Python3]String(字符串)
- [快学Python3]XML解析处理 - Element Tree
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Codeforce 239 B. Easy Tape Programming
- Codeforces Round #530 (Div. 1) 1098A Sum in the tree
- 非易失性WAL buffer实现解析(三)
- android实现切换日期左右无限滑动效果
- 疯子的算法总结(七) 字符串算法之 manacher 算法 O(N)解决回文串
- PostgreSQL WAL解析:构建WAL记录准备
- CodeForces - 225C. Barcode(DP)
- android studio 3.0 service项目背景音乐实现
- 疯子的算法总结(六) 复杂排序算法 ① 归并排序 merge_sort()
- PostgreSQL扫描方法综述
- CodeForces - 224C. Bracket Sequence (栈模拟)简单做法
- XLOG段文件跳号现象分析
- codeforce 227E 矩阵快速幂求斐波那契+N个连续数求最大公约数+斐波那契数列的性质
- 疯子的算法总结(五) 矩阵乘法 (矩阵快速幂)
- codeforce 227D Naughty Stone Piles (贪心+递归+递推)