假设我有这样的记录:
| id | equivalent_id |
+---------+-----------------+
|----11---|--------22-------|
|----22---|--------33-------|
|----33---|--------44-------|
|----44---|--------55-------|
|----55---|--------66-------|
我想在Oracle中编写查询以获取记录之间的隐式关系。例如,如果我在查询的输入中传递11
,它应该返回22, 33, 44, 55, 66
。
由于11
-> 22
和22
-> 33
,因此我们可以得出11
-> 33
依此类推
更新
数字可以超出上述范围,例如数字可以在1
至99999999
之间,并且记录之间不存在任何数学关系。
答案 0 :(得分:0)
我将进行分层查询:
SELECT equivalent_id
FROM <nameyourtable>
START WITH ID=11
CONNECT BY PRIOR equivalent_id=id;
不知道,如果我正确地获得了这个伪代码,但是你得到了图片...