sqlserver写递归,oraclesql递归查询讲解

怎么用sqlserver实现递归删除目录结构

WITH DirectReports(ManagerID, EmployeeID, Title, EmployeeLevel) AS ( SELECT ManagerID, EmployeeID, Title, 0 AS EmployeeLevel FROM dbo.MyEmployees WHERE ManagerID IS NULL UNION ALL --主要是在此,增加一个union all SELECT e.ManagerID, e.EmployeeID, e.Title, EmployeeLevel + 1 FROM dbo.MyEmployees AS e INNER JOIN DirectReports AS d -- 在此调用自身,就可以实现递归了 ON e.ManagerID = d.EmployeeID ) SELECT ManagerID, EmployeeID, Title, EmployeeLevel FROM DirectReports ORDER BY ManagerID;

南靖ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

sqlserver 递归查询

CREATE TABLE #tb1(stuId INT,stuName VARCHAR(30),teaId INT);

INSERT INTO #tb1 (stuId,stuName,teaId)

VALUES(1,'zhou',0),(2,'kong',0),(3,'hong',2),(4,'zhang',1),(5,'liu',4),

(6,'zhao',5),(7,'zheng',6),(8,'wei',7)

;WITH cte AS (

SELECT t.stuId,t.stuName,t.teaId FROM #tb1 AS t

WHERE t.stuId=8

UNION ALL

SELECT t.stuId,t.stuName,t.teaId FROM cte AS c

JOIN #tb1 AS t ON c.teaId=t.stuId

)

SELECT * FROM cte

SQL递归查询知多少

1、基本概念

公用表表达式 (CTE) 可以认为是在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集。公用表表达式可以包括对自身的引用,这种表达式称为递归公用表表达式。

创建递归查询。有关详细信息,请参阅使用公用表表达式的递归查询。

在不需要常规使用视图时替换视图,也就是说,不必将定义存储在元数据中。

启用按从标量嵌套 select 语句派生的列进行分组,或者按不确定性函数或有外部访问的函数进行分组。

在同一语句中多次引用生成的表。

MSDN上对CTE的介绍

T-SQL查询进阶--详解公用表表达式(CTE)

CTE 的基本语法结构如下:

WITH expression_name [ ( column_name [,...n] ) ]

AS

( CTE_query_definition )

--只有在查询定义中为所有结果列都提供了不同的名称时,列名称列表才是可选的。

--运行 CTE 的语句为:

SELECT column_list FROM expression_name;

即三个部分:

公用表表达式的名字(在WITH关键字之后)

查询的列名(可选)

紧跟AS之后的SELECT语句(如果AS之后有多个对公用表的查询,则只有第一个查询有效)

关于sqlserver递归查询

你的意思没特别看懂,但是在ORACLE里面的递归语法是:

select * from tab ...start with ... connect by col_parent...

你可以查一下start with ,connect 的语法


文章标题:sqlserver写递归,oraclesql递归查询讲解
分享地址:http://ybzwz.com/article/dsipeep.html