日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sqlserver with 语法

發布時間:2023/12/16 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sqlserver with 语法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

with 語法

用來實現遞歸查詢,比如當要查詢部門時,查詢當前部門及下屬部門就要采用遞歸的查詢

IdPidDeptName
10總部
21研發部
31測試部
41質量部
52小組1
62小組2
73測試1
83測試2
95前端組
105美工

要實現的效果:

IdPidDeptNamelvl
21研發部0
52小組11
62小組21
95前端組2
105美工2

查詢sql:

with cte as (select Id,Pid,DeptName,0 as lvl from Departmentwhere Id = 2union allselect d.Id,d.Pid,d.DeptName,lvl+1 from cte c inner join Department don c.Id = d.Pid ) select * from cte

執行過程:
遞歸CTE最少包含兩個查詢(也被稱為成員)。第一個查詢為定點成員,定點成員只是一個返回有效表的查詢,用于遞歸的基礎或定位點。第二個查詢被稱為遞歸成員,使該查詢稱為遞歸成員的是對CTE名稱的遞歸引用是觸發

首先定點成員 :

select Id,Pid,DeptName,0 as lvl from Department where Id = 2

查詢出來的結果集為ID=2的一條數據
接下來此條數據作為第二個查詢的基礎 也就是cte

select d.Id,d.Pid,d.DeptName,lvl+1 from cte c inner join Department d on c.Id = d.Pid

此時查出的結果集為 id為2的這一條數據和Department表作連接

IdPidDeptNamelvl
21研發部0
52小組11
62小組21

同理 將得到的記錄(上面的id=5和id=6的2條數據作為 cte,id為2的是條件,不是本次的結果)再作為基礎,再與Department表作連接 得到

IdPidDeptNamelvl
21研發部0
52小組11
62小組21
95前端組2
105美工2

依此類推 最后一次講上面id=9和id=10的記錄作為cte ,再與Department表作連接 , 此次的結果為空 ,遞歸結束。

總結

以上是生活随笔為你收集整理的sqlserver with 语法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。