最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2015年11月06日 09:36:25   投稿:mrr  
遞歸CTE是SQL SERVER 2005中重要的增強(qiáng)之一。一般我們在處理樹,圖和層次結(jié)構(gòu)的問題時需要用到遞歸查詢。本文給大家詳解使用sqlserver cte遞歸查詢出來樹、圖和層次結(jié)構(gòu),本文介紹的非常詳細(xì),感興趣的朋友一起看看吧

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),希望大家喜歡。

相關(guān)文章

最新評論

昭平县| 巩留县| 通化市| 和硕县| 通渭县| 宝应县| 民勤县| 威信县| 陆良县| 邯郸县| 广安市| 大邑县| 吉隆县| 顺义区| 舟山市| 光泽县| 安阳市| 襄樊市| 弋阳县| 东源县| 茶陵县| 英德市| 耒阳市| 缙云县| 临汾市| 临猗县| 河西区| 永善县| 晋江市| 含山县| 宝坻区| 永顺县| 渝中区| 泉州市| 凤庆县| 尖扎县| 车险| 社旗县| 长宁县| 南投市| 寿阳县|