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. 2つの左結合により、MySQLで誤ったデータ(二重データ?)が発生します

    2. SQLServerで現在のセッションの言語を変更する

    3. phppdoを使用してデータベースの行を削除します

    4. ロックされたテーブルの名前を変更する