递归简介

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 中使用递归:公共表表达式(CTE)
WITH calculate_SumOfNumber AS
     ( -- 初始查询
    SELECT 1 AS iteration, 1 AS SumOfNumber

UNION ALL -- 递归部分 SELECT iteration + 1, SumOfNumber + (iteration + 1) FROM calculate_SumOfNumber
WHERE iteration < 6 )
SELECT SumOfNumber FROM calculate_SumOfNumber
SQL Server 中的分层与递归查询

Passons à la pratique !

SQL Server 中的分层与递归查询

Preparing Video For Download...