sql >> Database teknologi >  >> RDS >> Oracle

Fjernelse af duplikerede undertræer fra CONNECT-BY-forespørgsel i oracle

Rodknuden i det endelige hierarki skal altid være kendt.Ifølge definitionen:http://en.wikipedia .org/wiki/Tree_structure rodnoden er en knude, der ikke har nogen forældre. For at kontrollere, om en given knude er en rodknude, skal du tage "parent_id" og tjekke i tabellen, om der findes en post med dette id. Forespørgslen kan se sådan ud:

SELECT id,parent_id,
  CONNECT_BY_ISLEAF leaf,
  LEVEL,
  SYS_CONNECT_BY_PATH(id, '/') Path,
  SYS_CONNECT_BY_PATH(parent_id, '/') Parent_Path
FROM tree_hierarchy th
WHERE CONNECT_BY_ISLEAF<>0
  CONNECT BY PRIOR id = PARENT_id
START WITH not exists (
      select 1 from tree_hierarchy th1 
      where th1.id = th.parent_id
  )
ORDER SIBLINGS BY ID;


  1. PREVIEW:SentryOne Plan Explorer-udvidelse til Azure Data Studio

  2. Problemer med at ombryde kompleks SQL-sletteforespørgsel

  3. Kan ikke redigere OHS-konfigurationsfiler i Enterprise Manager

  4. Klon en post, og brug derefter dens automatiske inkrement-id til yderligere handlinger