返回顶部
关闭软件导航
位置:首页 > 资讯 > 其他>对于from是视图的,那么这个view不能包含join

  2.2 遍历树

  Start with子句:

  首先必须确定startpoint,通过start with子句,后面加条件,这个条件是任何合法的条件表达式。

  Start with确定将哪行作为root,如果没有start with,则每行都当作root,然后查找其后代,这不是一个真实的查询。Start with后面可以使用子查询,如果有where条件,则会截断层次中的相关满足条件的节点,但是不影响整个层次结构。可以带多个条件。

  对于s_emp,从root title=president 开始,语句如下:

  select level,id,manager_id,last_name,title from s_emp

  start with manager_id is null

  connect by prior id=manager_id;

  这个语句与下面的语句等价,将start with 后面的条件换成子查询。

  select level,id,manager_id,last_name,title from s_emp

  start with title=(select title from s_emp where manager_id is null)

  connect by prior id=manager_id;

  注意:start with 和connect by prior不是ANSI标准sql。

无限层次树形笔记本

  Connect by子句:

  Connect by与prior 确定一个层次查询的条件和遍历的方向(prior 确定)。

  Connect by prior column_1=column_2;(其中prior表示前一个节点的意思,可以在connect by 等号的前后,列之前,也可以放到select中的列之前)。

  Connect by也可以带多个条件,比如 connect by prior id=manager_id and id>10;

  方向:

  1. 自顶向下遍历:就是先由根节点,然后遍历子节点。column_1表示父key,column_2表示子key。即这种情况下:connect by prior 父key=子key表示自顶向下,等同于connect by 子key=prior 父key.

  例如:

  select level,id,manager_id,last_name, title from s_emp

  start with manager_id=2

  connect by id=prior manager_id;--自下而上遍历

  2. 自底向上遍历:就是先由最底层的子节点,遍历一直找到根节点。与上面的相反。

无限层次树形笔记本

  Connect by 之后不能有子查询,但是可以加其他条件,比如加上and id !=2等。这句话则会截断树枝,如果id=2 的这个节点下面有很多子孙后代,则全部截断不显示。比如下面的句子:

无限层次树形笔记本   select level,id,manager_id,last_name,title from s_emp

  start with title=(select title from s_emp where manager_id is null)

  connect by prior id=manager_id and id!=2;

无限层次树形笔记本

  不来不加上id!=2,共有25 条记录,现在加上这个条件只有9 条记录了,因为id=2 的后代包括自己共有16条记录,全部被截断。

如果您觉得 对于from是视图的,那么这个view不能包含join 这篇文章对您有用,请分享给您的好友,谢谢
文章地址:https://www.tianxianmao.com/article/other/dyfromsstdnmzgviewbnbhjoin.html
解放双手无尽可能,有问题添加天线猫微信