甲状腺可使用其专有的CONNECT,自v2起就进行分级查询。 在最近发表的第11g号声明中,他们增加了复位的分级系数,也称为重新适用条款。 这是ANSI标准,如果我正确理解,该系统的其他供应商也执行了这一标准。
在比较连接与回馈时,我注意到在使用周期探测时所产生的结果有差异。 成果之间的联系对我来说更有启发性,因此我很想知道,Oracle的实施工作是否含有ug,或者这是否是标准ANSI和预期行为。 因此,我的问题是,如果你能够利用诸如MySQL、DB2、SQ和服务器等其他数据库,用问询来检查退学情况。 为这些数据库提供当然条款的支持。
在这方面,它是如何在Oracle11.2.0.1.0上开展工作的。
SQL> select *
2 from t
3 /
ID PARENT_ID
---------- ----------
1 2
2 1
2 rows selected.
The query using CONNECT BY syntax:
SQL> select id
2 , parent_id
3 , connect_by_iscycle
4 from t
5 connect by nocycle parent_id = prior id
6 start with id = 1
7 /
ID PARENT_ID CONNECT_BY_ISCYCLE
---------- ---------- ------------------
1 2 0
2 1 1
2 rows selected.
这对我有启发。 然而,利用新的ANSI syntax,它又一次返回:
SQL> with tr (id,parent_id) as
2 ( select id
3 , parent_id
4 from t
5 where id = 1
6 union all
7 select t.id
8 , t.parent_id
9 from t
10 join tr on t.parent_id = tr.id
11 ) cycle id set is_cycle to 1 default 0
12 select id
13 , parent_id
14 , is_cycle
15 from tr
16 /
ID PARENT_ID I
---------- ---------- -
1 2 0
2 1 0
1 2 1
3 rows selected.
这是你可以用来检查的文字:
create table t
( id number
, parent_id number
);
insert into t values (1, 2);
insert into t values (2, 1);
commit;
with tr (id,parent_id) as
( select id
, parent_id
from t
where id = 1
union all
select t.id
, t.parent_id
from t
join tr on t.parent_id = tr.id
) cycle id set is_cycle to 1 default 0
select id
, parent_id
, is_cycle
from tr;