Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Connect by-Klausel, um an die Spitze der Hierarchie zu gelangen

Oracle hat eine LEVEL Pseudospalte die Sie verwenden können:

SELECT
  myTable.ID,
  myTable.ParentID
FROM myTable
WHERE LEVEL = 1
CONNECT BY PRIOR myTable.ID = myTable.ParentID

Um einen Wert der obersten Ebene (Root) auf einer beliebigen Ebene zu finden, stellen Sie dem Spaltennamen den CONNECT_BY_ROOT voran Betreiber:

SELECT
  myTable.ID,
  myTable.ParentID,
  CONNECT_BY_ROOT myTable.ID AS "Top Level ID"
FROM myTable
CONNECT BY PRIOR myTable.ID = myTable.ParentID