SqlServer CTE递归共用表达式用法

发布时间 2023-09-11 09:47:41作者: 极客船长
WITH cte_test
AS(
SELECT AreaID,AreaName FROM dbo.Area WHERE AreaParentID=0
UNION ALL
SELECT a.AreaID,a.AreaName FROM dbo.Area a JOIN cte_test c ON a.AreaParentID=c.AreaID
)
SELECT * FROM cte_test

指定临时命名的结果集,这些结果集称为公用表表达式 (CTE)。公用表表达式可以包括对自身的引用。这种表达式称为递归公用表表达式

对于递归公用表达式来说,实现原理也是相同的,同样需要在语句中定义两部分:

  •    基本语句
  •    递归语句

   在SQL这两部分通过UNION ALL连接结果集进行返回: