Oracle循环查询以从同一表中获取值和子值

时间:2019-01-24 16:02:09

标签: oracle

我有一个表,其中包含层次结构中的值。 我想知道是否有人知道一个查询,在这里我可以遍历每一行以找到它的ID,然后搜索具有相同值的PARENTID的行。例如:

带桌​​子

ID  PARENTID    LEVEL   VALUE
-------------------------------
1   0           COUNTRY USA
2   1           CITY    NYC
3   1           CITY    LA
4   2           TEAM    GIANTS
5   2           TEAM    JETS
6   3           TEAM    RAMS
7   3           TEAM    CHARGERS

我可以先搜索ID:2(NYC),然后从那里找到该城市的所有球队。类似的东西(但我不知道我需要做的总循环)

SELECT ID2,VALUE FROM TABLE1 WHERE PARENTID = ID1; 

给我:

3,LA
6,RAMS
7,CHARGERS

1 个答案:

答案 0 :(得分:1)

connect by是遍历这样的层次结构的常用方法。如果添加start with,则可以选择层次结构中的起点。

SELECT table1.*, level
FROM table1
START WITH id = 3
CONNECT BY parentid = PRIOR id;

请注意,level是一个Oracle关键字,它将告诉您到目前为止已经完成了多少个循环。我不建议将其用作列名。 There's some other pseudocolumns and functions you might find helpful too