国产探花免费观看_亚洲丰满少妇自慰呻吟_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遞歸查詢處理樹、圖和層次結構,希望大家喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 北京市| 额尔古纳市| 丹凤县| 津南区| 信宜市| 长寿区| 明星| 周口市| 石首市| 广平县| 诸暨市| 双鸭山市| 叙永县| 绥化市| 竹山县| 巩义市| 墨竹工卡县| 丽江市| 金湖县| 永安市| 南京市| 石家庄市| 福清市| 玛沁县| 开平市| 和硕县| 隆德县| 石首市| 海阳市| 久治县| 吴桥县| 漳州市| 金乡县| 阆中市| 桑日县| 广宗县| 镇平县| 锡林浩特市| 南召县| 灵山县| 吴川市|