递归 select 语句

Recursive select statement

我有以下 table 个条目:

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

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

现在我采用此记录的 Col2 值(3RDT3R9H)并将它们视为我的新 Col1 值以获取具有 Col1 值 3RDT3R9H

这应该递归地完成。此外它还应该select 其他方向的所有记录。如果我从 Col1 的 3RDT 开始,我得到 Col2 是 3RDT (3) 的记录,然后我有 Col1 的 3R9J 并获得我有 3R9J 的所有记录Col1 值。

我上面例子中的预期输出数据应该是前4条记录。

如果我正确理解你的问题,这个查询就可以完成工作。

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 导致每行显示一次。