Oracle ha un LEVEL
pseudocolonna
che puoi usare:
SELECT
myTable.ID,
myTable.ParentID
FROM myTable
WHERE LEVEL = 1
CONNECT BY PRIOR myTable.ID = myTable.ParentID
Per trovare un valore di primo livello (radice) da qualsiasi livello, fai precedere il nome della colonna con il CONNECT_BY_ROOT
operatore:
SELECT
myTable.ID,
myTable.ParentID,
CONNECT_BY_ROOT myTable.ID AS "Top Level ID"
FROM myTable
CONNECT BY PRIOR myTable.ID = myTable.ParentID