国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

使用SqlServer CTE遞歸查詢處理樹、圖和層次結(jié)構(gòu)

2020-07-25 12:49:06
字體:
供稿:網(wǎng)友

CTE(Common Table Expressions)是從SQL Server 2005以后版本才有的。指定的臨時命名結(jié)果集,這些結(jié)果集稱為CTE。 與派生表類似,不存儲為對象,并且只在查詢期間有效。與派生表的不同之處在于,CTE 可自引用,還可在同一查詢中引用多次。使用CTE能改善代碼可讀性,且不損害其性能。

遞歸CTE是SQL SERVER 2005中重要的增強(qiáng)之一。一般我們在處理樹,圖和層次結(jié)構(gòu)的問題時需要用到遞歸查詢。

CTE的語法如下

 WITH CTE AS (   SELECT EmpId, ReportTo, FName FROM Employ WHERE EmpId=   UNION ALL   SELECT emp.EmpId, emp.ReportTo, emp.FName FROM CTE JOIN Employ as emp ON CTE.EmpId=emp.ReportTo )

遞歸CTE最少包含兩個查詢(也被稱為成員)。第一個查詢?yōu)槎c(diǎn)成員,定點(diǎn)成員只是一個返回有效表的查詢,用于遞歸的基礎(chǔ)或定位點(diǎn)。第二個查詢被稱為遞歸成員,使該查詢稱為遞歸成員的是對CTE名稱的遞歸引用是觸發(fā)。在邏輯上可以將CTE名稱的內(nèi)部應(yīng)用理解為前一個查詢的結(jié)果集。

遞歸查詢沒有顯式的遞歸終止條件,只有當(dāng)?shù)诙€遞歸查詢返回空結(jié)果集或是超出了遞歸次數(shù)的最大限制時才停止遞歸。是指遞歸次數(shù)上限的方法是使用MAXRECURION。

 USE AdventureWorks; GO --Creates an infinite loop WITH cte (EmployeeID, ManagerID, Title) as (   SELECT EmployeeID, ManagerID, Title   FROM HumanResources.Employee   WHERE ManagerID IS NOT NULL  UNION ALL   SELECT cte.EmployeeID, cte.ManagerID, cte.Title   FROM cte    JOIN HumanResources.Employee AS e      ON cte.ManagerID = e.EmployeeID ) --Uses MAXRECURSION to limit the recursive levels to  SELECT EmployeeID, ManagerID, Title FROM cte OPTION (MAXRECURSION ); GO

以上內(nèi)容就是本文給大家介紹的使用SqlServer CTE遞歸查詢處理樹、圖和層次結(jié)構(gòu),希望大家喜歡。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南汇区| 开封市| 桓台县| 虎林市| 奇台县| 九台市| 改则县| 电白县| 扎赉特旗| 房山区| 大连市| 徐闻县| 黄骅市| 乐平市| 扶绥县| 枣强县| 手机| 平湖市| 长沙市| 田东县| 武宣县| 天长市| 疏勒县| 和政县| 涿州市| 自治县| 大理市| 德安县| 玉门市| 英德市| 阿拉善右旗| 仪征市| 富民县| 江西省| 壶关县| 绥棱县| 元朗区| 潼南县| 青浦区| 南木林县| 蒙山县|