Oracle:使用没有START WITH的CONNECT BY语句

时间:2014-05-22 19:20:22

标签: sql oracle

我在使用CONNECT BY语句时遇到了一些困难。我在编写1个给定记录的查询时没有问题(使用START WITH),但我正在寻找创建提取的可能性。

数据
1个
2
3
4
5
6个

表格
ID PARENT_ID
1个2
1个5
1个6
2个3
2个4

我需要的是一张充满以下信息/记录的表格。

期望输出
ID PARENT_ID
1个2
1个3
1个4
1个5
1个6
2个3
2个4

如果我使用以下查询

SELECT PARENT_ID
FROM TABLE
START WITH ID = 1
CONNECT BY NOCYCLE PRIOR ID = PARENT_ID

我将得到以下结果

2
3
4
5
6
这实际上是我要为ID 1寻找的parent_id。

如果我删除了开头,我有以下列表

2
3
4
5
6
3
4个

我试图在声明中添加ID,但这也不起作用。不知道是否有可能有这样的输出?

1 个答案:

答案 0 :(得分:0)

您忘记了prior关键字。您希望将parent_id连接到上一条记录的ID。 (可能是相反,但你会注意到这么快。;-))

SELECT ID
FROM TABLE
START WITH ID = 1
CONNECT BY prior ID = PARENT_ID