connect by 是结构化查询中用到的,其基本语法是:
1 select … from tablename 2 start with 条件1 3 connect by 条件2 4 where 条件3;
1 select * from table 2 start with org_id = ‘HBHqfWGWPy’ 3 connect by prior org_id = parent_id;
oracle 提供了start with connect by 语法结构可以实现递归查询。
1). 一个简单举例:
1 SQL> select * from test;
2 BILL_MONTH DAY_NUMBER MSISDN
3 -------------------- ---------- --------------------
4 200803 1 13800
5 200803 3 13800
6 200803 2 13800
7 200803 2 13801
8 200803 4 13804
9 200803 5 13804
10 200803 7 13804
11 200803 8 13804
12 200803 6 13802
13 200803 6 13801
14 200803 7 13801
15 200803 8 13801
16 12 rows selected
17
18 SQL>
19 SQL> select * from test
20 2 start with day_number=1
21 3 connect by prior day_number=day_number-1 and prior msisdn= msisdn
22 4 ;
23
24 BILL_MONTH DAY_NUMBER MSISDN
25 -------------------- ---------- --------------------
26 200803 1 13800
27 200803 2 13800
28 200803 3 13800
29
30 SQL>
上面的语句查找出了从1开始,并且day_number 逐渐+1 递增的,并且 msisdn 相同的哪些个数据.
2). start with connect by 语法结构
如上面说看到的例子,其语法结构为start with condition connect by condition (含 prior 关键字)
start with conditon 给出的seed 数据的范围, connect by 后面给出了递归查询的条件,prior 关键字表示父数据,prior 条件表示子数据需要满足父数据的什么条件。在下面的这个start with connect by 结构中,就表示查找出了从1开始,父数据的day_number等于子数据的day_number-1而且父数据的msisdn=子数据的msisdn.
start with day_number=1
connect by prior day_number=day_number-1 and prior msisdn= msisdn
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31540281/viewspace-2917830/ ,如需转载,请注明出处,否则将追究法律责任。