递归 select 语句
Recursive select statement
我有以下 table 个条目:
Col1 | Col2
------------------
3RDT | 3R9H
3R9H |
3R9J | 3RDT
3R9J | 3R9H
3HHA | 3ABC
3XXZ | 3HHA
我有一个值3R9J
。
现在我想要 Col1 具有该值的所有记录,在本例中为记录 3 和 4。
现在我采用此记录的 Col2 值(3RDT
和 3R9H
)并将它们视为我的新 Col1 值以获取具有 Col1 值 3RDT
或 3R9H
。
这应该递归地完成。此外它还应该select 其他方向的所有记录。如果我从 Col1 的 3RDT
开始,我得到 Col2 是 3RDT
(3) 的记录,然后我有 Col1 的 3R9J
并获得我有 3R9J
的所有记录Col1 值。
我上面例子中的预期输出数据应该是前4条记录。
如果我正确理解你的问题,这个查询就可以完成工作。
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
导致每行显示一次。
我有以下 table 个条目:
Col1 | Col2
------------------
3RDT | 3R9H
3R9H |
3R9J | 3RDT
3R9J | 3R9H
3HHA | 3ABC
3XXZ | 3HHA
我有一个值3R9J
。
现在我想要 Col1 具有该值的所有记录,在本例中为记录 3 和 4。
现在我采用此记录的 Col2 值(3RDT
和 3R9H
)并将它们视为我的新 Col1 值以获取具有 Col1 值 3RDT
或 3R9H
。
这应该递归地完成。此外它还应该select 其他方向的所有记录。如果我从 Col1 的 3RDT
开始,我得到 Col2 是 3RDT
(3) 的记录,然后我有 Col1 的 3R9J
并获得我有 3R9J
的所有记录Col1 值。
我上面例子中的预期输出数据应该是前4条记录。
如果我正确理解你的问题,这个查询就可以完成工作。
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
导致每行显示一次。