oracle查询语句


1. 树查询
Java代码  
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. 分页查询
Java代码  
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为例
Java代码  
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

Java代码  
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提示试试,也许会快很多
Java代码  
SELECT /**//*+ ORDERED */*   
  FROM a, b, c, d   
 WHERE    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值