zoukankan      html  css  js  c++  java
  • ORA-01436: 用户数据中的CONNECT BY 循环

    起始地     目的地     距离(公里)
    A             B             1000
    A             C             1100
    A             D             900
    A             E             400
    B             D             300
    D             F             600
    E             A             400
    F             G             1000
    C             B             600
    请用SQL语句或一段代码写出从A出发,可达到的目的地(包括间接方式)。

    create table dest(                   
    sid char(1),                         
    eid char(1),                         
    distance int);                       
    insert into dest values('A','B',1000);
    insert into dest values('A','C',1100);
    insert into dest values('A','D',900);
    insert into dest values('A','E',400);
    insert into dest values('B','D',300);
    insert into dest values('D','F',600);
    insert into dest values('E','A',400);
    insert into dest values('F','G',1000);
    insert into dest values('C','B',600);

    自然的就会想到

    select sid from dest connect by prior eid=sid start with sid='A';

    但是在运行时提示:ORA-01436: 用户数据中的 CONNECT BY 循环 这是a到e,又从e到a,有死循环......

    解决方法 nocycle:

    SELECT eid,level distance
    FROM dest
    START WITH SID='A'
    connect by nocycle prior eid=sid

  • 相关阅读:
    洛谷P3406 海底高铁[差分 贪心]
    POJ3398Perfect Service[树形DP 树的最大独立集变形]
    POJ3928Ping pong[树状数组 仿逆序对]
    UVALive
    UVALive
    http协议进阶(二)URL与资源
    http协议进阶(一)HTTP概述
    http协议基础(十)实体首部字段
    http协议基础(九)响应首部字段
    http协议基础(八)请求首部字段
  • 原文地址:https://www.cnblogs.com/princessd8251/p/4058436.html
Copyright © 2011-2022 走看看