微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

oralce中查询某个机构号及其下属机构号,这样的树形数据查询问题

Oracle中使用connect by prior递归算法可以解决这类问题

语法:

select .... from tablename start with 条件1 connect by 条件2
where 条件3

例如: select * from table start with branch_id = "B00000"
connect by prior branch_id = parent_branch_id;
说明: 1. 条件1是根节点的限定语句,可以放宽条件,取得多个根节点,实际上就是多个树
条件2是连接条件,其中prior表示上一条记录,像例子中的 上一条记录的branch_id是本记录的parent_branch_id
条件3是过滤条件
2. connect by 说明每行数据将按层次顺序检索,priory 运算符必须放置在连接关系的两列中的某一个的前面,对于节点间的父子关系,prior运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是自顶向下还是自底向上
3. 关于prior具体使用,prior 在connect by 字句等号的后面,则强制从叶节点到根节点的顺序检索,如果在connect by 字句的前面,像举的例子一样,就是从根节点查所有的子节点。
4. 在树结构查询的时候,可以使用where 过滤节点,order by排序

原文地址:https://www.jb51.cc/oracle/209167.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐