sql >> Databáze >  >> RDS >> Sqlserver

Získejte kořenového rodiče potomka v hierarchické tabulce

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

Odpověď @TechDo předpokládá, že nejnižší ID bude rodič. Pokud se na to nechcete spoléhat, výše uvedený dotaz se seřadí podle hloubky.



  1. Řízení selhání replikace pro MySQL a MariaDB pomocí skriptů před nebo po selhání

  2. Jak aktualizovat 3 sloupce tabulek, zatímco na stránce je viditelný pouze jeden sloupec

  3. Získejte seznam tabulek MySQL a spusťte kód pro každou tabulku

  4. SQL Server – Potřebuji se připojit, ale NENÍ rovno