递归查询

蓝色底色的字为个人喜欢的名字,根据喜好进行修改

递归查询:用于处理层次或树形结构的数据,可以帮助我们在单个查询中遍历这些结构,无论是向上追溯还是向下展开

 


WITH···AS···递归查询

  WITH T(id,name,parentid)

  AS (SELECT id,name,parentid

    FROM test

    UNION ALL

    SELECT t2.id,t2.name,t2.parentid

    FROM test t2

    INNER JOIN T

    ON T.id = t2.parentid)

  SELECT * FROM T

  查找所有的有父节点的数据


START WITH&CONNECT BY

  SELECT id,name,parentid,LEVEL

  FROM test

  START WITH parentid = 0

  CONNECT BY PRIOR id = parentid

  查找从 parentid = 0 的数据开始,每个 parentid 等于上一个找到的数据的 id

  START WITH 定义了递归的起点,而 CONNECT BY 定义了递归的条件。PRIOR 关键字用于引用前一次递归中的列

  LEVEL 是 Oracle 数据库中的一个特殊伪列,用于表示当前记录在层次结构中的层级深度。根节点的 LEVEL 值为1,其子节点的 LEVEL 值为2,依此类推

 

posted @ 2025-06-03 14:56  wwwwxxxx  阅读(7)  评论(0)    收藏  举报