sql >> Databasteknik >  >> RDS >> Sqlserver

T-SQL hämta rotnod i hierarkin

Vad sägs om att flytta LEFT JOIN från 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

Resultatuppsättningen är 1, 4, 7.




  1. Upprätthållande av unik/primär nyckel - drop index

  2. Prestandapåverkan av tom LIKE i ett förberett uttalande

  3. När ska bilder lagras i en databas (mySQL) och när inte? (Länkar bild till objekt i databasen)

  4. Mysql-funktion som returnerar ett värde från en fråga