sql语句查询下级下下级

1.MS Sql
 
with cte as
(
    select Id,Pid,DeptName, 0 as lvl from Department
    where Id = 2
    union all
    select d.Id,d.Pid,d.DeptName,lvl + 1 from cte c inner join Department d
    on c.Id = d.Pid
)
select * from cte
 
2.Oracle
 
一、建表
  CREATE TABLE USERS.TBL_TEST
 
  (
 
  ID    NUMBER,
 
  NAME  VARCHAR2(100 BYTE),
 
  PID   NUMBER                                  DEFAULT 0
 
  )
 
  INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');
 
  INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1'
 
  INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');
 
  INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');
 
  INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');
 
  二、格式
 
  Select * from …. Where [结果过滤条件语句]
 
  Start with  [and起始条件过滤语句]
 
  Connect by prior [and中间记录过滤条件语句]
 
  三、查找所有下级
 
  select * from tbl_test start with id=1 connect by prior id=pid
 
  注意:此sql能查找id=1的数据的所有下级,写sql语句时要注意,因为是从id开始查找下级,所以connect by prior 子句的条件是id=pid
 
  四、查找所有上级
 
  select * from tbl_test start with id=5 connect by prior pid=id
 
  因为是从id开始查找上级,所以connect by prior 子句的条件是pid=d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值