遞迴入門

SQL Server 的階層式與遞迴查詢

Jasmin Ludolf

Content Developer

什麼是遞迴?

遞迴是指程序、子常式、函式或演算法在滿足特定條件前,呼叫自身一次或多次的作法

多次自我呼叫的遞迴特性示意圖。

SQL Server 的階層式與遞迴查詢

遞迴的實例

家譜-找出近 5 代所有父系

  • 將問題縮減為同型的小問題
    1. 全部問題:找出五代
    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 中使用遞迴:Common Table Expression - 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 的階層式與遞迴查詢

一起來練習吧!

SQL Server 的階層式與遞迴查詢

Preparing Video For Download...