再帰CTEの概要

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

Jasmin Ludolf

Content Developer

再帰CTE

4つの構成:

WITH cte_name AS (

-- アンカーメンバー initial_query
UNION ALL -- 再帰メンバー recursive_query termination_condition )
SELECT * FROM cte_name
SQL Server における階層型クエリと再帰クエリ

再帰CTEの使用ガイド

  • 100回超の再帰には、上限を引き上げます:

    • OPTION(MAXRECURSION 32767)
  • 使用不可のSQL: GROUP BY, HAVING, LEFT JOIN, RIGHT JOIN, OUTER JOIN, SELECT DISTINCT, Subqueries, TOP

  • アンカーと再帰メンバーの列数は同一

  • アンカーと再帰メンバーのデータ型は同一

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

再帰の例

階乗の計算:

n の階乗は、n 以下の正の整数の積で定義されます。

3! = 1 x 2 x 3 = 6

階乗 n! を再帰的に定義:

  • 0! = 1 (iteration = 1)
  • (n+1)! = n! * (iteration+1) (iteration > 1)
SQL Server における階層型クエリと再帰クエリ

コードでの再帰例

WITH recursion AS

(SELECT 1 AS iterationCounter,1 AS factorial
UNION ALL SELECT iterationCounter+1,factorial * (iterationCounter+1) FROM recursion
WHERE iterationCounter < 10 )
SELECT factorial FROM recursion
3628800
SQL Server における階層型クエリと再帰クエリ

演習に進みましょう

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

Preparing Video For Download...