`

删除父节点同时删除该节点下的所有子节点(oracle)

阅读更多

表结构:

表名:node

字段:node_id up_node

数据:

1    0

2    1

3    1

4     2

5    2

要求:删除该表中的某个节点时,删除该节点下的所有子节点.如删除node_id = 2的节点,需同时删除node_id=4,node_id=5的节点.

方法:
delete node where node_id in(
    select node_id from node
      start with node=2
      connect by prior node_id=up_node );

原本以为要利用递归或临时表的方法,结果发现这么一个语句就够了.

分享到:
评论

相关推荐

    Oracle通过递归查询父子兄弟节点方法示例

    1. **查询某节点下所有后代节点(包括各级父节点)** 使用以下查询,可以获取ID为101的节点及其所有后代,包括各级父节点: ```sql SELECT t.* FROM SYS_ORG t START WITH id = '101' CONNECT BY parent_id = ...

    通过父编码信息给子节点分组

    例如,使用`LISTAGG`函数可以将同一父节点下的所有子节点ID聚合在一起,形成一个字符串: ```sql SELECT parent_id, LISTAGG(id, ',') WITHIN GROUP (ORDER BY id) AS child_ids FROM table_name WHERE parent_...

    oracle 树型的寻父或寻子

    这里的LEVEL字段记录了每个节点相对于起始节点(即父节点)的距离,PRIOR关键字用来引用当前行的上一行,即父节点。 其次,对于大型树结构,一次性加载所有层级可能效率低下。这时,我们可以使用层次查询的游标或者...

    Oracle树查询总结

    使用 `START WITH ID=某个特定值` 定义起始节点,然后 `CONNECT BY parent_id = PRIOR ID` 指示 Oracle 从当前节点开始,逐层查找所有子节点,直至找到所有后代。 4. **查找一个节点的直属父节点(父亲)** 通过 ...

    Oracle树查询实例分析

    `START WITH ID = some_id CONNECT BY sjflid = PRIOR ID`的查询能够获取指定节点及其所有子节点,包括间接子节点。`PRIOR`关键字在这里用于指向前一个节点,确保沿着父到子的方向遍历。 4. **查找直属父节点** ...

    oracle树查询

    这条语句从ID为819459的节点开始,沿着树的层级向下遍历,返回该节点及其所有子节点的信息。 4. **查询特定节点的直接父节点:** 若要查询特定节点的直接父节点,可以使用如下SQL语句: ```sql SELECT b.* ...

    Oracle递归树形结构查询功能

    通过递归查询,我们可以轻松地获取任意部门及其所有子部门的信息,无需编写复杂的Java或其他编程语言代码。 在进行递归查询优化时,要注意避免无限循环和性能问题,确保`CONNECT BY`条件正确无误,必要时还可以使用...

    oracle prior

    EMPNO 表示该雇员的编号,MGR 表示领导该雇员的人的编号,即子节点的 MGR 值等于父节点的 EMPNO 值。在表的每一行中都有一个表示父节点的 MGR(除根节点外),通过每个节点的父节点,就可以确定整个树结构。 在 ...

    Oracle树查询及相关函数

    这将返回所有直属父节点,顺序是从最近的父节点到最远的祖宗节点。 6. **查询节点的兄弟节点**:这可以通过使用`EXISTS`子查询实现,找到与指定节点具有相同父节点的所有节点。 除了基本的查询语法,Oracle还提供...

    sql查询某个parentid下的所有childid

    在数据库管理和应用开发中,经常需要查询某一特定节点下的所有子节点信息。例如,在组织结构、产品分类等层级数据管理中,我们需要获取某个父级分类的所有子分类,包括直接子分类以及其所有的后代分类。本篇文章将...

    MySQL实现树状所有子节点查询的方法

    在MySQL中,实现树状所有子节点的查询并非像Oracle那样可以直接使用Hierarchical Queries和`CONNECT BY`语句。然而,尽管MySQL不直接支持这样的功能,我们仍然可以通过其他方法来达到相同的效果。以下将详细介绍几种...

    Oracle中层次查询的使用和探讨.pdf

    层次数据就像一棵树,每个节点有父节点和可能的子节点,根节点没有父节点,而叶节点没有子节点。例如,一个公司组织结构中,总经理是顶层节点,下面有部门经理,经理下面又有员工,形成了一层层的层级关系。 Oracle...

    三种实现方法实现数据表中遍历寻找子节点

     Id ParentId 1 0 2 1 3 2 …… 针对该表结构解释如下: 1的父节点为0, 2的父节点为1, 3的父节点为2 …… 以此类推,要求给定一个父节点的值,比如1, 用SQL语句查询的到该父结点下的所有子节点 ...

    【Oracle】树状结构查询

    `WHERE`子句可以用来限制查询结果,但它仅作用于当前节点,不会向下传递至子节点或向上影响父节点。例如,排除特定员工: ```sql SELECT LEVEL, SYS_CONNECT_BY_PATH(a.ename, '/'), a.* FROM empa WHERE a.empno ...

    Oracle层次查询功能的剖析.pdf

    `CONNECT BY`则定义了父节点与子节点之间的关系,用于遍历整个层次结构。此外,可以使用常规的`WHERE`语句来进一步筛选满足特定条件的节点。 层次查询的过程包括5个步骤: 1. 从数据表中选取满足`START WITH`条件的...

    Oracle经典SQL语句

    -- 自循环表中 由叶子节点查父节点 -- 查子节点 复制一张表的数据到另外一张表中 PLSQL中存储过程及游标的基本使用 Oracle中恢复某张表丢失数据的方法 -- 把SELECT出来的结果导到一个文本文件中 -- 查询新建用户 -- ...

Global site tag (gtag.js) - Google Analytics