首頁 資料庫 mysql教程 SQLSERVER中CTE语句结构及CTE递归查询

SQLSERVER中CTE语句结构及CTE递归查询

Jun 07, 2016 pm 04:20 PM
sqlserver 查詢 結構 語句 遞迴

SQL SERVER中CTE语句结构及CTE递归查询 CTE语句结构 公用表表达式 (CTE) 可以认为是在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集。CTE 与派生表类似,具体表现在不存储为对象,并且只在查询期间有效。与派生表的

   SQL SERVER中CTE语句结构及CTE递归查询

  CTE语句结构

  公用表表达式 (CTE) 可以认为是在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集。CTE 与派生表类似,具体表现在不存储为对象,并且只在查询期间有效。与派生表的不同之处在于,CTE 可自引用,还可在同一查询中引用多次。

  使用上面的test4表为例:

  WITH TEST_CTE

  AS

  (

  select * from test4

  )

  此句创建了名为TEST_CTE的select * from test4的结果集。由于它不存储为对象,并且只在查询期间有效,所CTE和查询语句需要在一起执行:

  WITH TEST_CTE

  AS

  (

  select * from test4

  )

  select * from TEST_CTE

  结果集跟select * from test4结果集机同。

  下面是指定列的CTE使用:

  WITH TEST_CTE(id)

  AS

  (

  select id from test4

  )

  定义中的列需要与语句里面的列对应,,见红色字体。

  CTE可用于创建递归查询。

  创建测试表并插入数据:

  create table test5

  (

  id int,

  name varchar(50),

  parentid int

  )

  insert into test5(id,name,parentid)

  select 1,'父类1',0

  union all

  select 2,'父类2',0

  union all

  select 3,'父类3',0

  union all

  select 11,'子类11',1

  union all

  select 12,'子类12',1

  union all

  select 111,'子子类111',11

  union all

  select 22,'子类22',2

  union all

  select 222,'子子类222',22

  结果:

  id name parentid

  1 父类1 0

  2 父类2 0

  3 父类3 0

  11 子类11 1

  12 子类12 1

  111 子子类111 11

  22 子类22 2

  222 子子类222 22

  使用CTE创建递归查询,获取父类1及所有其子类及子类的子类...:

  with Test_Recursion(id,name,parentid,[level])

  AS

  (

  select id,name,parentid,0 from test5 where id =1--没有引用CTE自身必须放在第一个递归行之上

  union all--没有引用CTE自身的语句和第一个递归行之间必须用UNION ALL

  select a.id,a.name,a.parentid,b.[level]+1 from test5 as a join Test_Recursion as b on a.parentid=b.id--递归行

  )

  select * from Test_Recursion

  结果:

  id name parentid level

  1 父类1 0 0

  11 子类11 1 1

  12 子类12 1 1

  111 子子类111 11 2

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

sqlserver怎麼匯入mdf文件 sqlserver怎麼匯入mdf文件 Apr 08, 2024 am 11:41 AM

sqlserver怎麼匯入mdf文件

C++ 函式的遞歸實作:遞迴深度有限制嗎? C++ 函式的遞歸實作:遞迴深度有限制嗎? Apr 23, 2024 am 09:30 AM

C++ 函式的遞歸實作:遞迴深度有限制嗎?

sqlserver服務無法啟動怎麼辦 sqlserver服務無法啟動怎麼辦 Apr 05, 2024 pm 10:00 PM

sqlserver服務無法啟動怎麼辦

C++ lambda 表達式是否支援遞迴? C++ lambda 表達式是否支援遞迴? Apr 17, 2024 pm 09:06 PM

C++ lambda 表達式是否支援遞迴?

怎麼查看sqlserver連接埠號 怎麼查看sqlserver連接埠號 Apr 05, 2024 pm 09:57 PM

怎麼查看sqlserver連接埠號

sqlserver誤刪資料庫怎麼恢復 sqlserver誤刪資料庫怎麼恢復 Apr 05, 2024 pm 10:39 PM

sqlserver誤刪資料庫怎麼恢復

sqlserver安裝失敗怎麼樣刪除乾淨 sqlserver安裝失敗怎麼樣刪除乾淨 Apr 05, 2024 pm 11:27 PM

sqlserver安裝失敗怎麼樣刪除乾淨

sqlserver英文安裝怎麼更改中文 sqlserver英文安裝怎麼更改中文 Apr 05, 2024 pm 10:21 PM

sqlserver英文安裝怎麼更改中文

See all articles