有表:
CREATE TABLE TBL_TEST
(
ID NUMBER,
NAME VARCHAR2(100 BYTE),
PID NUMBER DEFAULT 0
);
插入测试数据:
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2'); 查询:
select * from TBL_TEST
start with id=1
connect by prior id = pid
为什么结果是:
ID NAME PID
---------- -------------------------------------------------------------------------------- ----------
1 10 0
2 11 1
5 121 2
4 12 1
我不明白,请各位高手给详细的解释一下
小弟感激涕零!!!!!!!!!!!!!!!!!!!!!
CREATE TABLE TBL_TEST
(
ID NUMBER,
NAME VARCHAR2(100 BYTE),
PID NUMBER DEFAULT 0
);
插入测试数据:
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2'); 查询:
select * from TBL_TEST
start with id=1
connect by prior id = pid
为什么结果是:
ID NAME PID
---------- -------------------------------------------------------------------------------- ----------
1 10 0
2 11 1
5 121 2
4 12 1
我不明白,请各位高手给详细的解释一下
小弟感激涕零!!!!!!!!!!!!!!!!!!!!!
解决方案 »
- ora-12154:TNS:无法解析指定的连接标示符
- 请叫各位,有没有一个类似于一种累积的聚合函数
- 关于带参数的视图查询不到数据的问题
- 删除表和索引 您的帖子 标题过短
- java 连接 oracle 之ClassNotFoundEXception
- Oracle 如何设置 可以不产生 UNDO 日志
- 想用游标实现删除一个标中的一些记录,这样做为什么出错
- ORACLE9i数据库和数据库之间连接,如何调用存储过程,在线等待。。。。。。
- 怎么在oracle中插入大于4000的字符串?
- ??用exp导出表时,出现如下问题(用sqlplus也是),tns可以正常启动。请帮助!
- 关于oracle序列的问题
- 本地和异地执行问题
所以Id = 1的记录被选出。(第一层)
connect by prior id = pid
ID = 2,4的这两条记录,他们的PID = 1,即上一层记录的ID,所以这两条被选出;(第二层)
ID=5的这条记录,PID= 2,所以也被选出。(第三层)
connect by prior id = pid --连接条件为其他记录中的ID的值为当前的PID, 下条记录又作为当前记录,以此类推
在start with子句之前加上 where level=1 --1或2,3,4
可查询每一层的数据
结果应该是:
id
1
2
4
5
为什么查询出来时:
id
1
2
5
4
能解释一下你第二句话是什么意思吗?