drop table members;
create table members(
id NUMBER(5) primary key not null,
nick_name varchar(20) not null,
parent_member varchar(20)
);
insert into members(id,nick_name,parent_member) values(1,'A','');
insert into members(id,nick_name,parent_member) values(2,'B','A');
insert into members(id,nick_name,parent_member) values(3,'C','B');
insert into members(id,nick_name,parent_member) values(4,'D','C');
insert into members(id,nick_name,parent_member) values(5,'E','C');
insert into members(id,nick_name,parent_member) values(6,'F','C');
WITH TEMP(nick_name,parent_member) AS(
SELECT nick_name,parent_member FROM members WHERE nick_name='A'
UNION ALL
SELECT b.nick_name,b.parent_member FROM members b, TEMP t WHERE b.parent_member=t.nick_name
)
SELECT count(*)-1 FROM TEMP;
--或者
select count(*)-1
from members emp
start with nick_name='A'
connect by prior nick_name=parent_member;