使用Oracle特有的查询语法, 可以达到事半功倍的效果

1. 树查询

create table tree (
    id number(10) not null primary key,
    name varchar2(100) not null,
    super number(10) not null                // 0 is root
);
-- 从子到父
select * from tree start with id = ? connect by id = prior super 
-- 从父到子
select * from tree start with id = ? connect by prior id = suepr
-- 整棵树
select * from tree start with super = 0 connect by prior id = suepr

2. 分页查询

select * from ( 
    select my_table.*, rownum  my_rownum from ( 
        select name, birthday from employee order by birthday
    ) my_table where rownum < 120 
) where my_rownum >= 100;

3. 累加查询, 以scott.emp为例

select empno, ename, sal, sum(sal) over(order by empno) result from emp;
 
     EMPNO ENAME             SAL     RESULT
---------- ---------- ---------- ----------
      7369 SMITH             800        800
      7499 ALLEN            1600       2400
      7521 WARD             1250       3650
      7566 JONES            2975       6625
      7654 MARTIN           1250       7875
      7698 BLAKE            2850      10725
      7782 CLARK            2450      13175
      7788 SCOTT            3000      16175
      7839 KING             5000      21175
      7844 TURNER           1500      22675
      7876 ADAMS            1100      23775
      7900 JAMES             950      24725
      7902 FORD             3000      27725
      7934 MILLER           1300      29025

4. 高级group by

select decode(grouping(deptno),1,'all deptno',deptno) deptno,
       decode(grouping(job),1,'all job',job) job,
       sum(sal) sal
from emp 
group by ROLLUP(deptno,job);
DEPTNO                                   JOB              SAL
---------------------------------------- --------- ----------
10                                       CLERK           1300
10                                       MANAGER         2450
10                                       PRESIDENT       5000
10                                       all job         8750
20                                       CLERK           1900
20                                       ANALYST         6000
20                                       MANAGER         2975
20                                       all job        10875
30                                       CLERK            950
30                                       MANAGER         2850
30                                       SALESMAN        5600
30                                       all job         9400
all deptno                               all job        29025

5. use hint
当多表连接很慢时,用ORDERED提示试试,也许会快很多

SELECT /**//*+ ORDERED */* 
  FROM a, b, c, d 
 WHERE  

转载于:https://www.cnblogs.com/lancelang/archive/2007/10/30/942920.html

Oracle高级查询相关推荐

  1. oracle高级查询案例,oracle高级查询(实例基于scott用户四张表)

    oracle高级查询(实例基于scott用户四张表) 分组查询 多表查询 子查询 综合实例 ====================================================== ...

  2. Oracle高级查询之over(partition by...) 分组排序

    Oracle高级查询之over(partition by...) 分组排序 一.rank()/dense_rank() over(partition by ...order by ...) 现在客户有 ...

  3. oracle—高级查询

    Sql基础 数据库语言 数据操纵语言:DML (data manipulation language) select insert update delete merge 数据定义语言:DDL(dat ...

  4. oracle高级查询用法

    2019独角兽企业重金招聘Python工程师标准>>> 层次化查询 有下图这样一张表,它记录的是员工的一些信息,m_id该员工的上级的id,例如James就是Ron的上级: 那么我们 ...

  5. Oracle高级查询,over 用法

    注:标题中的红色order by是说明在使用该方法的时候必须要带上order by. 一.rank()/dense_rank() over(partition by ...order by ...) ...

  6. Oracle高级查询之over(partition by..)

    查看原文:http://ibloger.net/article/248.html 为了方便学习和测试,所有的例子都是在Oracle自带用户Scott下建立的. create table EMP (em ...

  7. 傅老师课堂:Oracle高级查询之CONNECT BY

    为了方便大家学习和测试,所有的例子都是在Oracle自带用户Scott下建立的. Oracle中的select语句可以用start with ... connect by prior ...子句实现递 ...

  8. 傅老师课堂:Oracle高级查询之OVER (PARTITION BY ..)

    [size=large][size=large][size=large]开篇一笑:某日一妹子对男友说:在一起这么久了你都没有夸过我漂亮,今天我要你夸夸我,男子想了一会看着女友鸡冻的说道:我硬了. 为了 ...

  9. 傅老师课堂:Oracle高级查询之OVER (PARTITION BY ..) 1

    为了方便大家学习和测试,所有的例子都是在Oracle自带用户Scott下建立的. 注:标题中的红色order by是说明在使用该方法的时候必须要带上order by. 一.rank()/dense_r ...

最新文章

  1. pyEcharts安装及详细使用指南
  2. 利用Python绘制萌萌哒的皮卡丘
  3. Latex 数学符号表
  4. Hibernate和UUID标识符
  5. 你被限流了吗?| 图解+代码
  6. 安防弱电智能化VISIO图标图例(几百个),让你的技术方案瞬间高大上起来
  7. php301劫持,黑帽seo技巧-301权重代码劫持
  8. 英语单词记忆(词缀 / 后缀)
  9. ubuntu18.04安装kinect1(xbox360)驱动以及实时运行rtabmap
  10. python炒股难度_诺贝尔奖得主教你如何分配炒股仓位 | python量化系列
  11. javamail模拟邮箱功能--邮件删除-中级实战篇【邮件标记方法】(javamail API电子邮件实例)
  12. 使用Termux在安卓手机上运行tomcat服务器
  13. 如何获取淘宝商品类目信息,通过商品ID获取商品类目?
  14. 分治法 divide and conquer
  15. go Benchmark的运行
  16. 提高win7系统运行速度的方法
  17. Relational Reinforcement Learning: An Overview
  18. html5 编写网页代码,使用纯HTML5编写一款网页上的时钟的代码分享
  19. 计算机中文输入法教案,输入汉字的学习
  20. evb测试板_TB6600EVB全功能TB6600芯片测试板(LP)

热门文章

  1. (积累)java里的套接字
  2. urllib.parse
  3. BZOJ 3175 最大独立集
  4. 从另一服务器传输文件到本服务器(服务器间传输文件)
  5. PE头里的东西更多。。。越看越恶心了,我都不想看了
  6. [原创]Android Monkey测试工具使用介绍
  7. jquery 表格(鼠标悬停改变改变行背景+隔行换色)
  8. word 2010 从第三页开始设置页码
  9. 尝试jquery插件的开发
  10. JAVA调用SQL存储过程详解