【SQL 学习】层次化查询之CONNECT BY 和 START WITH

简介:

SQL> select employee_id ,manager_id ,first_name ,last_name
  2  from emp
  3  start with employee_id =1--- 定义层次化查询的起点
  4  connect by prior employee_id = manager_id;指定父行与子行之间的关系。也就是父节点的employee_id 等于  子节点的manager_id

EMPLOYEE_ID MANAGER_ID FIRST_NAME LAST_NAME
-----------               ----------           ---------------       ----------------
          1                                              James      Smith
          2                         1                   Ron           Johnson
          3                         2                   Fred          Hobbs
          5                         2                   Rob           Green
          4                         1                   Susan      Jones
          6                         4                   Jane         Brown
          9                         6                   Henry        Heyson
          7                         4                   John         Grey                   
          8                         7                   Jean         Blue                      
         10                       1                    Kevin        Black              
         11                     10                    Keith         Long
         12                     10                    Frank        Howard
         13                     10                    Doreen     Penn

已选择13行。
执行计划
----------------------------------------------------------                                                                       
Plan hash value: 1213993571               
                                                                                                                 
------------------------------------------------------------------------------------------------
| Id  | Operation                               | Name | Rows  | Bytes | Cost (%CPU)| Time     |               
------------------------------------------------------------------------------------------------               
|   0 | SELECT STATEMENT                        |      |    13 |   234 |     3   (0)| 00:00:01 |              
|*  1 |  CONNECT BY NO FILTERING WITH START-WITH|      |       |       |            |          |              
|   2 |   TABLE ACCESS FULL                     | EMP  |    13 |   234 |     3   (0)| 00:00:01 |              
------------------------------------------------------------------------------------------------               
Predicate Information (identified by operation id):
---------------------------------------------------               
                                                                                                                                 
   1 - access("MANAGER_ID"=PRIOR "EMPLOYEE_ID")               
       filter("EMPLOYEE_ID"=1) 

相关文章
|
8天前
|
SQL
sql语句加正则 简化查询
sql语句加正则 简化查询
12 0
sql语句加正则 简化查询
|
27天前
|
SQL
sql server链接查询
sql server链接查询
17 1
|
27天前
|
SQL
sql server简单查询
sql server简单查询
14 1
|
16天前
|
SQL 关系型数据库 MySQL
mysql一条sql查询出多个统计结果
mysql一条sql查询出多个统计结果
13 0
|
27天前
|
SQL
sql高级查询
sql高级查询
12 0
|
1月前
|
SQL 存储 数据可视化
10个高级的 SQL 查询技巧
10个高级的 SQL 查询技巧
|
28天前
|
SQL 数据库
sql server高级查询,看这篇文章就够了
sql server高级查询,看这篇文章就够了
21 0
|
1月前
|
SQL
T-SQL 语句查询
T-SQL 语句查询
55 0
|
1月前
|
SQL 存储 关系型数据库
sql数据库查询语句大全
sql数据库查询语句大全
|
1月前
|
SQL Oracle 关系型数据库
Oracle系列之八:SQL查询
Oracle系列之八:SQL查询