再帰の導入

SQL Server における階層型クエリと再帰クエリ

Jasmin Ludolf

Content Developer

再帰とは?

再帰とは、所定の条件を満たすまで、自分自身を1回以上呼び出す手続き・サブルーチン・関数・アルゴリズムのことです

自分自身を何度も呼び出す再帰の性質を示す画像。

SQL Server における階層型クエリと再帰クエリ

再帰の実例

【家系図】— 直近5世代の父をすべて探す

  • 同種のより小さい問題に分解する
    1. 全体: 5世代すべてを探す
    2. 小問題: 父を探す、さらにその父を探す…
  • 手順数に上限を設ける

家系図での再帰の例。

SQL Server における階層型クエリと再帰クエリ

再帰のポイント

【利点】

  • 再帰的に問題を解ける
  • 読みやすく追いやすい
  • 終了条件で回数を制限できる

【欠点】

  • 実行が遅い場合がある
SQL Server における階層型クエリと再帰クエリ

再帰例:数の合計

【数学的定義】

連続する自然数の和は次のように再帰的に定義できます。

number = 1 
    for iteration = 1
number = number + (iteration - 1) 
    for iteration > 1

1から5までの和は次のとおりです。

1+2+3+4+5 = 15
SQL Server における階層型クエリと再帰クエリ

再帰例:数の合計

  • SQLでの再帰: 共通テーブル式(CTE)
WITH calculate_SumOfNumber AS
     ( -- Initial Query
    SELECT 1 AS iteration, 1 AS SumOfNumber

UNION ALL -- Recursive Part SELECT iteration + 1, SumOfNumber + (iteration + 1) FROM calculate_SumOfNumber
WHERE iteration < 6 )
SELECT SumOfNumber FROM calculate_SumOfNumber
SQL Server における階層型クエリと再帰クエリ

Let's practice!

SQL Server における階層型クエリと再帰クエリ

Preparing Video For Download...