1

2

3

4

向上递归查询 所有上级SQL:<br>    SELECT *

FROM ORGANIZE

START WITH TID = '1409'

CONNECT BY PRIOR PARENT_ID = TID

Oracle递归查询(查询当前记录所有父级或子级)向上递归查询 所有上级元数据: 1 2 3 4 SELECT * FROM ORGANIZE START WITH PARENT_ID ='1409' CONNECT BY PRIOR PARENT_ID = TID    1 2 3 4 向上递归查询 所有上级SQL:&lt;br&.
一、需求: 我们在开发中经常遇到一种 数据 库表的设计:一个表中包含父 信息 数据 ,也就是常说的树形 数据 . —> 最常见的例 就是省市区一体表,就是通过id、pid、level来进行控制,从而一张表来存储 数据 .我们进行拿 数据 的时候,不用再连表拿取,直接通过(start with connect by prior)直接便利就会得到 数据 . 二、准备省市区表: CREATE TABLE REGION ( "ID" NUMBER NOT NULL, "name" VARCHAR2(200 BYTE), 数据 形式是这样的: 1.首先抛出一条母 数据 (即表中被创建一条初始 记录 ),这条母 数据 是未关闭的,ID字段内 记录 它的一个ID信息,modterID字段为空。由相关人员对此 数据 进行初判,判断这条母 记录 确实是正确的,且写的很精细,则预判通过,有相关人员处理,处理完毕后则关闭这条母 记录 。此时该 记录 是没有 记录 的。 2.如果针对母 记录 ,预判发现有误,则预判人员会关闭母 记录 ,并且以母 记录 为根节点,再创建一条 记录 (即ID字段内 记录 自己的ID信息,modterID就是上调母 记录 的ID),此时这条 记录 未关闭。 from coa_node t1 where T1.partition_key = '202107310015' and T1.coa_node_type_code = 'Account' start with t1.coa_node_name = 'LIABILITY' connect by prior t1.coa_node_name = t1.coa_parent_node_name 部分表结果及关键 数据 如下
SELECT dept_Id, parent_Id FROM DEPT START WITH dept_Id= '1' Connect BY Prior dept_Id = parent_Id 字段名- ID:dept_Id 字段名-父ID:parent_Id START WITH:从哪一代开始查找,它的ID是什么?将参数写入条件 CONNECT BY PRIOR:关联的2个字段名   ID NUMBER,   NAME VARCHAR2(100 BYTE),   PID NUMBER DEFAULT 0   INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(‘1’,’10’,’0’);
public static MenuItem findParent(MenuItem menuItem) { if (menuItem.getParent() == null) { // 如果没有 父级 ,则返回 当前 菜单项 return menuItem; } else { // 递归查询 父级 菜单项 return findParent(menuItem.getParent()); public static void main(String[] args) { MenuItem menuItem1 = new MenuItem(1, "菜单项1", null); MenuItem menuItem2 = new MenuItem(2, "菜单项2", menuItem1); MenuItem menuItem3 = new MenuItem(3, "菜单项3", menuItem2); MenuItem parent = findParent(menuItem3); System.out.println(" 级菜单项 " + menuItem3.getName() + " 的 父级 菜单项是:" + parent.getName()); 在这个例 中,`MenuItem` 类表示菜单项,其中包含菜单项的 ID、名称和 父级 菜单项。`Menu` 类包含了一个 `findParent` 方法,用于 递归查询 级菜单项的 父级 菜单项。在 `main` 方法中,创建了三个菜单项,并将第一个菜单项作为整个菜单的根节点。然后,通过调用 `findParent` 方法来 查询 菜单项 3 的 父级 菜单项,最终输出结果为:` 级菜单项 菜单项3 的 父级 菜单项是:菜单项1`。 需要注意的是,如果菜单项的层级非常深,或者菜单项的层级非常多,那么使用 递归查询 可能会导致栈溢出。因此,应该在实现递归函数时考虑到这些问题,并进行必要的优化。