[20140219]编写递归sql语句.txt

简介: 昨天看https://jonathanlewis.wordpress.com/2014/02/16/recursive-subquery-factoring/,发现sql语句可以使用递归写法,我还第1 次知道sql能这么写.

昨天看https://jonathanlewis.wordpress.com/2014/02/16/recursive-subquery-factoring/,发现sql语句可以使用递归写法,我还第1
次知道sql能这么写.自己记录一些例子.

with data(p) as (
    select 1 p from dual
    union all
    select p + 1 from data where p )
select    p
from    data
where    rownum ;

         P
----------
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10

10 rows selected.

--这是一种递归的写法.

--自己做一个斐波那契数列.1,1,2,3,5,8,13,21,34,55,89...看看.

with data(a,b) as (
    select 1 a,1 b from dual
    union all
    select b a, a+b b from data where a+b )
select    a
from    data
where    rownum ;

         A
----------
         1
         1
         2
         3
         5
         8
        13
        21
        34
        55

10 rows selected.

SCOTT@test> @dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID  cbdzqzz4b73y6, child number 0
-------------------------------------
with data(a,b) as (     select 1 a,1 b from dual     union all
select b a, a+b b from data where a+b where    rownum Plan hash value: 37253879
---------------------------------------------------------------------------------
| Id  | Operation                                  | Name | E-Rows | Cost (%CPU)|
---------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                           |      |        |     4 (100)|
|*  1 |  COUNT STOPKEY                             |      |        |            |
|   2 |   VIEW                                     |      |      2 |     4   (0)|
|   3 |    UNION ALL (RECURSIVE WITH) BREADTH FIRST|      |        |            |
|   4 |     FAST DUAL                              |      |      1 |     2   (0)|
|   5 |     RECURSIVE WITH PUMP                    |      |        |            |
---------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter(ROWNUM

目录
相关文章
|
5月前
|
SQL 分布式计算 MaxCompute
odps sql 怎么实现递归查询?
odps sql 怎么实现递归查询?
374 1
|
6月前
|
SQL 存储 分布式计算
ODPS怎么实现SQL中的多层递归?
ODPS怎么实现SQL中的多层递归?
224 1
|
7月前
|
SQL Oracle 关系型数据库
oracle中sql的递归查询运用
oracle中sql的递归查询运用
|
SQL XML Oracle
Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。
Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。
372 0
Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。
|
SQL 存储 缓存
一文搞懂MySQL中一条SQL语句是如何执行的
一文搞懂MySQL中一条SQL语句是如何执行的
|
9月前
|
SQL 关系型数据库 数据库
10个高级SQL写法,包括窗口函数、联合查询、交叉查询、递归查询
10个高级SQL写法,包括窗口函数、联合查询、交叉查询、递归查询
167 1
|
SQL 程序员 开发工具
【Sql Server】基础之分组查询重复出现多条记录的SQL语句,以及group by和having、min函数运用
基础之分组查询重复出现多条记录的SQL语句,以及group by和having、min函数运用
433 0
【Sql Server】基础之分组查询重复出现多条记录的SQL语句,以及group by和having、min函数运用
SQL 查询表中每门课程成绩最好的前n名学生 优于group by语句的方法
SQL 查询表中每门课程成绩最好的前n名学生 优于group by语句的方法
SQL 查询表中每门课程成绩最好的前n名学生 优于group by语句的方法
|
SQL 关系型数据库 MySQL
SQL语句优化方法
SQL语句优化方法
136 0
|
SQL 数据库 数据安全/隐私保护
使用SQL语句 查询电话号码 加密显示
使用SQL语句 查询电话号码 加密显示
181 0
使用SQL语句 查询电话号码 加密显示