ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 在查询列表中使用PRIOR操作

在查询列表中使用PRIOR操作

原创 Linux操作系统 作者:yangtingkun 时间:2009-08-23 23:51:20 0 删除 编辑

对于树形查询中的PRIOR操作,一般都是用在CONNECT BY语句中,而这个PRIOR操作其实在SELECT的字段列表中也是可以使用的。

 

 

看一个简单的例子:

SQL> create table t (id number, parent_id number, name varchar2(30));

Table created.

SQL> insert into t values (1, null, 'a');

1 row created.

SQL> insert into t values (2, 1, 'b');

1 row created.

SQL> insert into t values (3, 1, 'c');

1 row created.

SQL> insert into t values (4, 2, 'd');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t;

        ID  PARENT_ID NAME
---------- ---------- ---------------
         1            a
         2          1 b
         3          1 c
         4          2 d

SQL> select id, parent_id, name
  2  from t
  3  start with id = 1
  4  connect by prior id = parent_id;

        ID  PARENT_ID NAME
---------- ---------- ---------------
         1            a
         2          1 b
         4          2 d
         3          1 c

这是树形查询中最长使用PRIOR操作的情况,在CONNECT BY语句中使用。

不过PRIOR还可以用在SELECT列表中:

SQL> select id, parent_id, prior id p_id, name, prior name p_name
  2  from t
  3  start with id = 1
  4  connect by prior id = parent_id;

        ID  PARENT_ID       P_ID NAME            P_NAME
---------- ---------- ---------- --------------- ---------------
         1                       a
         2          1          1 b               a
         4          2          2 d               b
         3          1          1 c               a

除了普通的列,PRIOR甚至还可以用于SYS_CONNECT_BY_PATH函数:

SQL> select
  2  id,
  3  parent_id,
  4  prior id p_id,
  5  sys_connect_by_path(name, '/') name,
  6  prior sys_connect_by_path(name, '/') p_name
  7  from t
  8  start with id = 1
  9  connect by prior id = parent_id;

        ID  PARENT_ID       P_ID NAME            P_NAME
---------- ---------- ---------- --------------- ---------------
         1                       /a
         2          1          1 /a/b            /a
         4          2          2 /a/b/d          /a/b
         3          1          1 /a/c            /a

利用这个功能,可以使得树形查询实现很多更灵活的功能。

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4227/viewspace-613052/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1964
  • 访问量
    11077049