ホームページ >データベース >mysql チュートリアル >SQL Server で再帰的 CTE はどのように行ごとに実行されるのでしょうか?
再帰 CTE の行ごとの実行
再帰共通テーブル式 (CTE) は理解するのが難しいことがよくありますが、理解することはできます。実行ラインを次のように分解することで理解できます。 line.
アンカー
SELECT id, Name, ParentID, CAST(Name AS VARCHAR(1000)) AS Path FROM @tbl WHERE ParentId IS NULL
再帰メンバー
SELECT t.id, t.Name, t.ParentID, CAST((a.path + '/' + t.Name) AS VARCHAR(1000)) AS "Path" FROM @tbl AS t JOIN abcd AS a ON t.ParentId = a.id
無限の UNION ALL
再帰的 CTE は、反復ごとに新しいレベルの階層を追加し、水平方向に拡張する無限の UNION ALL として考えてください。たとえば、abcd2 には abcd1 の子ノードが含まれ、abcd3 には abcd2 の子ノードが含まれる、というようになります。
各反復
停止中条件
理論的には、再帰的 CTE は無限に実行できます。ただし、SQL Server は停止条件を実装することで無限のレコードセットを防止します。再帰メンバーが新しい行の生成に失敗すると、反復は停止します。
この例では、再帰メンバーがレベル abcd6 の子ノードを見つけることができなかった場合、反復は終了します。
最終結果
最終結果は、最上位のノードから最下位のレベルまで展開します。 [パス] 列には、階層内の各ノードへの完全なパスが表示されます。
以上がSQL Server で再帰的 CTE はどのように行ごとに実行されるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。