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

父親IDで編成されたツリーで循環参照を見つけるためのSQLSELECT?

    SELECT  n.*, CONNECT_BY_ROOT(id), level
    FROM    elements n
    START WITH
            id IN
            (
            SELECT  MIN(id)
            FROM    (
                    SELECT  id, CONNECT_BY_ROOT(id) AS root
                    FROM    elements
                    START WITH
                            id IN
                            (
                            SELECT  id
                            FROM    elements n
                            WHERE   CONNECT_BY_ISCYCLE = 1
                            CONNECT BY NOCYCLE
                                    father_id = PRIOR id
                            )
                    CONNECT BY NOCYCLE
                            id = PRIOR father_id
                    )
            GROUP BY
                    root
            )
    CONNECT BY NOCYCLE
            id = PRIOR father_id
    

    この記事を読むことをお勧めします:




    1. MySQLのようなRDBMSに双方向の関係を保存する方法は?

    2. OracleDatabase20cの新機能

    3. 不足している月をクエリ結果に追加する

    4. PostgreSQLの主キーを1にリセットします