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

首頁 > 數據庫 > SQL Server > 正文

使用SqlServer CTE遞歸查詢處理樹、圖和層次結構

2024-08-31 01:03:25
字體:
來源:轉載
供稿:網友

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

遞歸CTE是SQL SERVER 2005中重要的增強之一。一般我們在處理樹,圖和層次結構的問題時需要用到遞歸查詢。

CTE的語法如下

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

遞歸CTE最少包含兩個查詢(也被稱為成員)。第一個查詢為定點成員,定點成員只是一個返回有效表的查詢,用于遞歸的基礎或定位點。第二個查詢被稱為遞歸成員,使該查詢稱為遞歸成員的是對CTE名稱的遞歸引用是觸發。在邏輯上可以將CTE名稱的內部應用理解為前一個查詢的結果集。

遞歸查詢沒有顯式的遞歸終止條件,只有當第二個遞歸查詢返回空結果集或是超出了遞歸次數的最大限制時才停止遞歸。是指遞歸次數上限的方法是使用MAXRECURION。

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

以上內容就是本文給大家介紹的使用SqlServer CTE遞歸查詢處理樹、圖和層次結構,希望大家喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泊头市| 名山县| 平顺县| 孟连| 长泰县| 双流县| 禹州市| 昭平县| 马龙县| 龙门县| 灯塔市| 富蕴县| 怀宁县| 宜昌市| 南华县| 成安县| 泰州市| 韶关市| 团风县| 舒兰市| 涟源市| 扎兰屯市| 三江| 湘西| 凌源市| 建昌县| 青州市| 紫金县| 开化县| 长垣县| 奉节县| 罗甸县| 巧家县| 同心县| 昌宁县| 正定县| 洛川县| 正镶白旗| 隆德县| 广元市| 穆棱市|