濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 使用SqlServer CTE遞歸查詢處理樹、圖和層次結(jié)構(gòu)

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

熱門標(biāo)簽:地圖標(biāo)注可以編輯地名嗎 地圖標(biāo)注跑線下市場(chǎng) 濮陽(yáng)清豐400開頭的電話申請(qǐng) 真3地圖標(biāo)注 疫情時(shí)期電話機(jī)器人 樂昌電話機(jī)器人 南京怎么申請(qǐng)400這種電話 南通智能外呼系統(tǒng)怎么樣 臺(tái)灣外呼系統(tǒng)軟件

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

遞歸CTE是SQL SERVER 2005中重要的增強(qiáng)之一。一般我們?cè)谔幚順洌瑘D和層次結(jié)構(gòu)的問題時(shí)需要用到遞歸查詢。

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

遞歸查詢沒有顯式的遞歸終止條件,只有當(dāng)?shù)诙€(gè)遞歸查詢返回空結(jié)果集或是超出了遞歸次數(shù)的最大限制時(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),希望大家喜歡。

您可能感興趣的文章:
  • 在sqlserver中如何使用CTE解決復(fù)雜查詢問題
  • SQLSERVER2008中CTE的Split與CLR的性能比較
  • 使用SQLSERVER 2005/2008 遞歸CTE查詢樹型結(jié)構(gòu)的方法
  • SQLSERVER2005 中樹形數(shù)據(jù)的遞歸查詢
  • sqlserver另類非遞歸的無限級(jí)分類(存儲(chǔ)過程版)
  • SqlServer使用公用表表達(dá)式(CTE)實(shí)現(xiàn)無限級(jí)樹形構(gòu)建

標(biāo)簽:福建 通遼 阿里 陜西 河北 南京 廣安 馬鞍山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《使用SqlServer CTE遞歸查詢處理樹、圖和層次結(jié)構(gòu)》,本文關(guān)鍵詞  使用,SqlServer,CTE,遞歸,查詢,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《使用SqlServer CTE遞歸查詢處理樹、圖和層次結(jié)構(gòu)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于使用SqlServer CTE遞歸查詢處理樹、圖和層次結(jié)構(gòu)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    太谷县| 沛县| 拜泉县| 历史| 新兴县| 特克斯县| 盘山县| 永胜县| 台南县| 阿克苏市| 蚌埠市| 丰县| 化德县| 和田县| 佛山市| 肥西县| 琼海市| 德令哈市| 栖霞市| 琼中| 星座| 青田县| 阿拉善右旗| 弥勒县| 易门县| 芜湖县| 迭部县| 南皮县| 深圳市| 新晃| 江源县| 怀远县| 鹿泉市| 高青县| 永定县| 鄂伦春自治旗| 鄯善县| 章丘市| 会泽县| 承德县| 江都市|