oracle查询树信息
发布时间:2020-12-12 14:03:38 所属栏目:百科 来源:网络整理
导读:oracle查询树信息 项目中经常有树结构,如组织、类别等。一般表中有父节点字段,需要查询类型有: - 展示整个树 - 显示所有子节点 - 显示所有祖先节点 应用常规的查询,需要查询多次,oracle提供了查询方法,可以非常简洁直接查询,下面通过示例说明。 示例
oracle查询树信息项目中经常有树结构,如组织、类别等。一般表中有父节点字段,需要查询类型有: 应用常规的查询,需要查询多次,oracle提供了查询方法,可以非常简洁直接查询,下面通过示例说明。 示例表结构Employee -------------
ID (int)
FirstName (varchar)
LastName (varchar)
ParentID (int)
Job (varchar)
employee表,其中 ParentID 表示Employee的管理者。 查询完整树SELECT * FROM Employee START WITH ParentID IS NULL CONNECT BY PRIOR ID = ParentID ORDER SIBLINGS BY LastName,FirstName,ID;
查询特定Employee的子节点无需层次查询,直接给定:parent_id。 SELECT * FROM Employee WHERE ParentID = :parent_id ORDER BY LastName,ID;
查询所有后代与查询整个树一致,但需提供绑定变量:parent_id。 SELECT * FROM Employee START WITH ParentID = :parent_id CONNECT BY PRIOR ID = ParentID ORDER SIBLINGS BY LastName,ID;
查询祖先与前面的类似,但需要CONNECT BY反向查询,无需排序,因为每个Employee只有一个管理者,需指定绑定变量:employee_id。 SELECT * FROM Employee START WITH ID = :employee_id CONNECT BY PRIOR ParentID = ID;
查询员工管理者与前面一样,但增加LEVEL = 2过滤,仅获取直接父行。指定绑定变量:employee_id。 SELECT e.* FROM Employee e WHERE LEVEL = 2 START WITH ID = :employee_id CONNECT BY PRIOR ParentID = ID;
总结利用oracle自带的层级查询,可以提升查询效率,简化查询代码,希望对你有用。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |