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

階層テーブルの子のルート親を取得

    DECLARE @id INT = 6
    ;WITH parent AS
    (
        SELECT id, parentId, 1 AS [level] from tbl WHERE id = @id
        UNION ALL 
        SELECT t.id, t.parentId, [level] + 1 FROM parent
        INNER JOIN tbl t ON t.id =  parent.parentid
    )
    SELECT TOP 1 id FROM parent ORDER BY [level] DESC
      

    @TechDoの答えは、最も低いIDが親になることを前提としています。これに依存したくない場合、上記のクエリは深さでソートされます。



    1. PostgreSQLコマンドのドキュメント構文を読むにはどうすればよいですか?

    2. SQL Serverで無効になっているすべての制約を返す(T-SQLの例)

    3. PHP/MySQL-データをループするために変数名をインクリメントする

    4. 突然削除に時間がかかる