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

T-SQL získá kořenový uzel v hierarchii

Co takhle přesunout LEFT JOIN z CTE?

WITH root_nodes
AS (
    -- Grab all the leaf nodes I care about
    SELECT NULL as child_node, n.node as parent_node
    FROM #nodes n
    WHERE n.node IN (1, 2)

    UNION ALL

    -- Grab all the parent nodes
    SELECT rn.parent_node as child_node, a.parent_node
    FROM root_nodes rn
        JOIN #arcs a
      ON rn.parent_node = a.child_node
)
SELECT DISTINCT rn.parent_node AS root_node
FROM root_nodes rn
    LEFT JOIN #arcs a
  ON rn.parent_node = a.child_node
WHERE a.parent_node IS NULL

Výsledná sada je 1, 4, 7.




  1. Najít přidružení mezi databázovými poštovními účty a principy databáze v SQL Server (T-SQL)

  2. asp.net / MySQL:Přístup odepřen uživateli ''@'localhost' (s použitím hesla:NE)

  3. MySql :Vyberte příkaz pomocí operátoru IN

  4. Chyba při pokusu o připojení play s mysql 5.5