Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

T-SQL получава основен възел в йерархията

Какво ще кажете за преместването на LEFT JOIN извън 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

Резултатът е 1, 4, 7.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SqlDataSourceEnumerator.Instance.GetDataSources() не намира локален екземпляр на SQL сървър 2008

  2. Кой е най-добрият начин за внедряване на полиморфна асоциация в SQL Server?

  3. Генерирайте набор от резултати от нарастващи дати в TSQL

  4. Разделени със запетая резултати в SQL

  5. SQL Server 2008 празен низ срещу пространство