ホームページ > データベース > mysql チュートリアル > 再帰的 CTE は段階的にどのように機能しますか?

再帰的 CTE は段階的にどのように機能しますか?

Barbara Streisand
リリース: 2024-12-28 21:17:10
オリジナル
177 人が閲覧しました

How Do Recursive CTEs Work Step-by-Step?

再帰的 CTE 実行の内訳

再帰的 CTE は段階的な実行プロセスに従い、最終的に目的の結果セットを生成します。理解を深めるために、各ステップを 1 行ずつ詳しく見てみましょう。

WITH abcd AS (

この行は、「abcd」という名前の再帰 CTE を宣言します。これは、結果を蓄積する一時テーブル。

--アンカー

最初の select ステートメントはアンカーとして機能し、アンカー条件を満たす行を選択します。この場合、" の初期設定が行われます。 abcd" CTE.

SELECT id、Name、ParentID、CAST(Name AS VARCHAR(1000)) AS Path

この行は、ID、Name、ParentID、および最初は行の Name のみを含む計算列「Path」を抽出します。

FROM @tbl

データは一時テーブルから取得されます@tbl.

WHERE ParentId IS NULL

この条件は、ParentID が null である行をフィルターし、効果的に最上位の行を選択します。

UNION ALL

この演算子は、再帰メンバーを含むアンカー select ステートメント。

--recursive member

2 番目の select ステートメントは、アンカーに基づいて反復を実行する再帰メンバーを形成します。

SELECT t.id、t.Name、t.ParentID、CAST((a.path '/' t.Name) AS VARCHAR(1000)) AS "Path"

この行は、ID、Name、ParentID、および親の "Path" を連結する変更された列 "Path" を取得します。現在の行の名前。

FROM @tbl AS t

データは、「t」というエイリアスを持つ一時テーブル @tbl から取得されます。

JOIN abcd AS a

この結合ParentID を使用して、「t」の行を既存の「abcd」CTE の行とリンクします。 column.

ON t.ParentId = a.id

結合条件により、子行が親行と一致することが保証されます。

SELECT * FROM abcd

最後に、このステートメントはすべての反復を含む、再帰的 CTE からの完全な結果セット。

以上が再帰的 CTE は段階的にどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート