数据结构MATNR START1111111 222222222222 333333333333 444444查询Sql语句SELECT MATNRFROM sap_tlbom START WITH MATNR = '1111111' CONNECT BY prior IDNRK = MATNR查询结...
ID NUMBER,
NAME VARCHAR2(100 BYTE),
PID NUMBER DEFAULT 0
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(‘1’,’10’,’0’);
要在
Oracle
中实现根据
子节点
查询出父节点下的全部
子节点
,可以使用CONNECT BY语句和START WITH语句结合使用。
假设我们有一个表格叫做employee,其中包含了员工的ID、名称以及上级ID。我们想要查询出某个员工的上级节点下的所有
子节点
,可以使用以下SQL语句:
SELECT * FROM employee
WHERE CONNECT_BY_ISLEAF = 1
START WITH id = <指定员工ID>
CONNECT BY PRIOR id = parent_id;
其中,CONNECT_BY_ISLEAF是
Oracle
提供的一个伪列,用于判断当前节点是否为叶
子节点
。START WITH指定了起始节点,CONNECT BY指定了递归的条件。PRIOR是
Oracle
提供的一个关键字,用于获取上一级节点的值。
这个SQL语句会查询出指定员工的上级节点下的所有
子节点
的信息。如果需要查询某个员工的同级节点下的所有
子节点
,可以将START WITH的条件改为对应员工的上级ID。
需要注意的是,如果表格中存在环形引用的情况,
递归查询
可能会进入死循环,需要注意避免。