递归选择语句

时间:2015-04-10 08:50:58

标签: sql oracle recursive-query

我有以下表格条目:

 Col1    |    Col2
 ------------------
  3RDT   |  3R9H
  3R9H   |  
  3R9J   |  3RDT
  3R9J   |  3R9H
  3HHA   |  3ABC
  3XXZ   |  3HHA

我有一个值3R9J。 现在我想要Col1具有该值的所有记录,在本例中为记录3和4.

现在我获取此记录的Col2值(3RDT3R9H)并将其视为我的新Col1值,以获取具有Col1值3RDT或{{1的所有记录}}。

这应该以递归方式完成。此外,它还应该选择另一个方向的所有记录。如果我以3R9H开头为Col1,我会得到Col2为3RDT(3)的记录,然后我为Col1提供3RDT并获取我3R9J所有的记录Col1值。

上面示例中的预期输出数据应该是前4个记录。

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,那么此查询将完成此任务。

SQLFiddle

select *
  from test
  connect by col1 = prior col2
  start with col1 = '3R9J'
union
select *
  from test
  connect by prior col1 = col2
  start with col1 = '3RDT';

请注意union导致每行显示一次。