如何从Oracle中的链表中获取第一个元素?

时间:2015-10-21 07:55:19

标签: sql oracle oracle11g

我的Oracle-DB中有一个表,如下所示:

╔════╦════════════════╦═════════════╗
║ ID ║ Predecessor_id ║ Information ║
╠════╬════════════════╬═════════════╣
║ 1  ║     NULL       ║    foo      ║
║ 2  ║     1          ║    bar      ║
║ 3  ║     2          ║    muh      ║
║ 4  ║     NULL       ║    what     ║
║ 5  ║     4          ║    ever     ║
╚════╩════════════════╩═════════════╝

我需要一个返回类似这样的东西:

╔════╦════════════════╦════════════════════╦═════════════╗
║ ID ║ Predecessor_id ║ First_list_element ║ Information ║
╠════╬════════════════╬════════════════════╬═════════════╣
║ 1  ║     NULL       ║         1          ║    foo      ║
║ 2  ║     1          ║         1          ║    bar      ║
║ 3  ║     2          ║         1          ║    muh      ║
║ 4  ║     NULL       ║         4          ║    what     ║
║ 5  ║     4          ║         4          ║    ever     ║
╚════╩════════════════╩════════════════════╩═════════════╝

该表具有某种链表方面。 List的第一个元素是没有前任的元素。我需要的是它所属List的每一行的信息。该列表由第一个元素的ID定义。

在编程语言中,我会实现某种查找表。但在SQL中我不知道。我更喜欢SQL,但如果只有PL / SQL给我回复,我也会这样做。

1 个答案:

答案 0 :(得分:6)

您应该使用Tue, 20 Oct 2015 17:43:23 0000运算符

  

使用此运算符限定列时,Oracle使用根行中的数据返回列值。此运算符扩展了分层查询的CONNECT BY [PRIOR]条件的功能。   http://docs.oracle.com/cd/B19306_01/server.102/b14200/operators004.htm#i1035022

http://sqlfiddle.com/#!4/121f02/1

MySQL
相关问题