伪列ROWNUM、ROWID部分用法
ROWNUM是逻辑值,不可以参与计算
ROWID是物理值,可以参与计算
在ROWNUM和ROWID使用中,现将查找结果形成一个结果集 在结果集中给ROWID 和ROWNUM别名,在外层中使用这个别名找到要找的行。
ROWNUM用法
ROWNUM必须要给它起别名 不能直接用
查找emp表第五到第十行
SELECT EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO FROM(SELECT ROWNUM RN,EMP.* FROM EMP)WHERE RN>=5 AND RN<=10;
ROWID伪列
SELECT ROWID,E.* FROM EMP E;查看伪列
至于ROWID的作用,由于ROWID用来唯一标识表中数据的唯一性,所以可以利用这个特效去除重复
CREATE TABLE DEPT_8 AS SELECT * FROM DEPT WHERE 1=2;
INSERT INTO DEPT_8 SELECT * FROM DEPT;
INSERT INTO DEPT_8 SELECT * FROM DEPT;
COMMIT;
delete DEPT_8 where rowid not in (select max(rowid) from DEPT_8 group by DEPTNO,DNAME,LOC);
SELECT ROWID,DEPT_8.* FROM DEPT_8;
利用ROWNUM删去表中第3行
DELETE EMP2 WHERE EMPNO=
(
SELECT EMPNO FROM (SELECT ROWNUM RN,E.* FROM EMP2 E)WHERE RN=3
);
利用ROWNUM删去表中第5到7行
DELETE EMP4 WHERE EMPNO IN
(
SELECT EMPNO FROM(SELECT ROWNUM RN,E.* FROM EMP4 E)WHERE ROWNUM BETWEEN 5 AND 7
);
利用ROWNUM删去表中倒数第五行
DELETE EMP8 WHERE EMPNO=
(
SELECT EMPNO FROM(SELECT ROWNUM RN,EMP8.* FROM EMP8)WHERE RN=((SELECT COUNT(*)-4 FROM EMP8))
);
有很多重复的行,如何利用ROWNUM和ROWID删去倒数第五行
DELETE EMP10 WHERE ROWID=
(
SELECT RID FROM(SELECT ROWID RID,ROWNUM RN,E.* FROM EMP10 E)WHERE RN=(SELECT COUNT(*)-4 FROM EMP10)
);
伪列ROWNUM、ROWID部分用法的更多相关文章
- Oracle中ROWNUM伪列和ROWID伪列的用法与区别
做过Oracle分页的人都知道由于Oracle中没有像MySql中limit函数以及SQLServer中的top关键字等,所以只能通过伪列的方式去满足分页功能,在此,不谈分页方法,只从根本上去介绍这两 ...
- Oracle中的rownum,ROWID的 用法
1.ROWNUM的使用——TOP-N分析 使用SELECT语句返回的结果集,若希望按特定条件查询前N条记录,可以使用伪列ROWNUM. ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的 ...
- (转)Oracle中的rownum,ROWID的 用法
场景:在书写oracle的sql语句时候,如果语句不存在主键,需要删除几条重复的记录,这个时候如果不知道oracle中的伪列,就需要把所有的重复记录先删除,再插入.这样做好麻烦,可以通过伪列来定位记录 ...
- Oracle伪列rownum
Oracle基础知识:伪列rownum,伪列就像表中的列一样,但是在表中并不存储.伪列只能查询,不能进行增删改操作. 在查询的结果集中,ROWNUM为结果集中每一行标识一个行号,第一行返回1,第二行返 ...
- Oracle的数据伪列(ROWNUM)
作者:Vashon 时间:20150414 数据库:Oracle11g 数据伪列(ROWNUM) *范例:查询前5条记录:select rownum,empno,job,hiredate,sal fr ...
- oracle 之 伪列 rownum 和 rowid的用法与区别
rownum的用法 select rownum,empno,ename,job from emp where rownum<6 可以得到小于6的值数据 select rownum,empno, ...
- 关于Oracle伪列rownum
rownum列跟rowid列不一样,虽然同为表的伪列.但是rowid列是列的一个固定属性,而rownum列是结果集的一个排序.所以像如下查询是不会返回结果的:select rowid,rownum,e ...
- 用运oracel中的伪列rownum分页
在实际应用中我们经常碰到这样的问题,比如一张表比较大,我们只要其中的查看其中的前几条数据,或者对分页处理数据.在这些情况下我们都需要用到rownum.因此我们要理解rownum的原理和使用方法. Or ...
- oracle伪列
Oracle的伪列以及伪表 oracle系统为了实现完整的关系数据库功能,系统专门提供了一组成为伪列(Pseudocolumn)的数据库列,这些列不是在建立对象时由我们完成的,而是在我们建立时由Ora ...
随机推荐
- C++ template —— template metaprogram(九)
metaprogramming含有“对一个程序进行编程”的意思.换句话说,编程系统将会执行我们所写的代码,来生成新的代码,而这些新代码才真正实现了我们所期望的功能.通常而言,metaprogrammi ...
- .net 将DLL程序集生成到指定目录中
.在程序集右键属性 .在程序集属性界面中找到生成事件 在预先生成事件命令行添加: IF NOT EXIST "$(ProjectDir)..\Bin" MD "$(Pro ...
- 【cs229-Lecture14】主成分分析法
本节课内容: 因子分析 ---因子分析中的EM步骤的推导过程 主成份分析:有效地降低维度的方法 因子分析 混合高斯模型的问题 接下来讨论因子分析模型,在介绍因子分析模型之前,先看高斯分布的另一种写法, ...
- 如何修改 Ubuntu 的字符集?
步骤: 1.编辑 local 文件 输入: vi /var/lib/locales/supported.d/local 将 zh_CN.GB2312 加入到后面,保存. 2.执行:locale-gen ...
- MFC 常见问题
一 常见变量获得 CDC * cDc=GetDC(); HDC m_Screenhdc = this->GetDC()->m_hDC; // 整个窗口客户区的坐标 this->Ge ...
- 使用CMake编译跨平台静态库
在开始介绍如何使用CMake编译跨平台的静态库之前,先讲讲我在没有使用CMake之前所趟过的坑.因为很多开源的程序,比如png,都是自带编译脚本的.我们可以使用下列脚本来进行编译: . / con ...
- LeetCode 13 Roman to Integer(罗马数字转为整数)
题目链接 https://leetcode.com/problems/roman-to-integer/?tab=Description int toNumber(char ch) { switc ...
- Openstack的网卡设置
本博客已经添加"打赏"功能,"打赏"位置位于右边栏红色框中,感谢您赞助的咖啡. 最开始接触Openstack,这块是比较头疼的,不同的文档,设置都会有所差异,并 ...
- syslinux 和 grub
syslinux是一个功能强大的引导加载程序,而且兼容各种介质.它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘.它的安装很简单,一旦安装syslinux好之后,sysLinu ...
- 【转】Windows socket基础
转自:http://blog.csdn.net/ithzhang/article/details/8448655 Windows socket 基础 Windows socket是一套在Windows ...