sql >> データベース >  >> RDS >> Oracle

OracleのCONNECT-BYクエリから重複するサブツリーを削除する

    有限階層のルートノードは常に既知である必要があります。定義によると: http://en.wikipedia .org / wiki / Tree_structure ルートノードは親を持たないノードです。特定のノードがルートノードであるかどうかを確認するには、「parent_id」を取得し、このIDのレコードが存在するかどうかをテーブルで確認します。クエリは次のようになります。

    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. 8.3以降のPostgreSQLTEMPTABLEのパフォーマンスの低下を観察していますか?

    2. SQL-転置する方法は?

    3. mysqlREGEXPが一致しません

    4. テーブルの言語翻訳