利用CTE递归查询(WITH common_table_expression (Transact-SQL))

摘要:利用CTE递归查询(WITH common_table_expression (Transact-SQL))

CTE的官方解释是:指定临时命名的结果集,这些结果集称为公用表表达式 (CTE)。 该表达式源自简单查询,并且在单条 SELECT、INSERT、UPDATE 或 DELETE 语句的执行范围内定义。 该子句也可用在 CREATE VIEW 语句中,作为该语句的 SELECT 定义语句的一部分。 公用表表达式可以包括对自身的引用。 这种表达式称为递归公用表表达式。

示例代码:

 

;with tmp_num as 
(
select convert(int,1) as num,convert(varchar(max),'┌') as path_name
union all select convert(int,num+1) as num,convert(varchar(max),'├' + REPLICATE('-',num+1)) 
as path_name from tmp_num where num<32767
)
select path_name + convert(varchar(10),num) as title,* from tmp_num OPTION(MAXRECURSION 32767)
 
运行结果如下:
 
详细的解释,请参阅官方资料:
http://technet.microsoft.com/zh-cn/library/ms175972.aspx