求助一条SQL语句,通过数据链表定位一条记录。

戴威 发布于 2013/08/19 16:34
阅读 615
收藏 2

在一个Oracle数据库里有这么一张表TAB_LIST,表里有两个字段ID和PARENT_ID,一条记录里的PARENT_ID必定会等于表里另一条记录的ID,并且一条记录的ID只有唯一一条记录的PARENT_ID与之相等。

CREATE TABLE TAB_LIST (
  ID INT,
  PARENT_ID INT
)
如何一条SQL语句和一个ID,通过ID链表找寻到最底层的一条记录,或许Oracle有什么方便的函数。


加载中
0
戴威
戴威

我已经知道了,用Oracle的递归函数。

SELECT ID, PARENT_ID
  FROM TABLE_LIST
 START WITH ID = ?
CONNECT BY PRIOR ID = PARENT_ID;

0
戴威
戴威
和ID的大小没有什么关系,ID是无序的。
0
老骥伏枥-志在千里
老骥伏枥-志在千里
最底层不只一条记录吧?表结构设置不合理
0
小虫0302
小虫0302
这种表结构不能一次查出树型结构的节点吧, 有种左右树的存储结构可以实现。
0
exten
exten
本来下班的时候 给你回答了下 ,公司网络奇慢。回来重新给你点思路。我知道 SQL 里面 有CET表达式. 里面有递归的 例子你可以看看。
0
戴威
戴威

引用来自“exten”的答案

本来下班的时候 给你回答了下 ,公司网络奇慢。回来重新给你点思路。我知道 SQL 里面 有CET表达式. 里面有递归的 例子你可以看看。
可惜你的答案晚了两个多小时,不过还是谢了。
返回顶部
顶部