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

トップレベルへの親子関係のクエリ

    Permission is NOT NULL 階層内にある必要がある場合、この行がこのケースのルート ノードになります。この RootID にラベルを付けました ここ

    また、同じ ParentID = 0 からの複数の分岐を示すサンプル データを追加しました ルート

    DECLARE @t TABLE (NodeId int, NodeName varchar(100), ParentId int, Permission int)
    INSERT @t VALUES 
    (1,'Node1',0,NULL),
    (2,'Node2',1,1),
    (3,'Node3',1,NULL),
    (4,'Node4',1,NULL),
    (5,'Node5',2,NULL),
    (6,'Node6',5,NULL),
    (7,'Node7',2,NULL),
    (8,'Node1',0,NULL),
    (9,'Node9',8,2),
    (10,'Node10',9,NULL),
    (11,'Node11',10,NULL),
    (12,'Node12',11,NULL),
    (13,'Node13',10,NULL),
    (14,'Node14',9,NULL);
    
    WITH CTE AS
    (
        SELECT NodeId, NodeName, ParentId AS RootID FROM @t WHERE Permission IS NOT NULL
        UNION ALL
        SELECT T.NodeId, T.NodeName, CTE.RootID
        FROM @t T JOIN CTE ON T.ParentId = CTE.NodeId
    )
    SELECT
        *
    FROM
        CTE
    WHERE
        NodeName IN ('Node6', 'Node13');
    



    1. 複数のJOINSとGROUPBYCLAUSEを使用したクエリでCOUNT

    2. 文字列をmysql日付に解析する

    3. ORA-01264:ログ・ファイル名を作成できません

    4. MySQL構成ファイル(つまり、my.cnf)の場所が指定されていません