zoukankan      html  css  js  c++  java
  • 伪列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)

    );

  • 相关阅读:
    关于centos防火墙
    linux基础命令
    mysql经典语句
    异常处理
    抽象类
    特性-多态
    特性-继承
    特性-封装
    python模块/文件/日期时间
    python函数3-函数嵌套/递归/匿名函数
  • 原文地址:https://www.cnblogs.com/kawashibara/p/8963522.html
Copyright © 2011-2022 走看看