• 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

  • 相关阅读:
    按指定时间段分组统计
    SQL 截取字符
    SQL日期转换
    CentOS7安装rabbitMQ,并实现浏览器访问
    springdata的jpa配置文件application.xml
    在Ubuntu上安装Hive
    在Ubuntu上安装Spark
    在Ubuntu上安装Hbase
    在Ubuntu上安装hadoop-2.7.7
    springboot整合springdatajpa时jar冲突
  • 原文地址:https://www.cnblogs.com/princessd8251/p/4058436.html
Copyright © 2020-2023  润新知