日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 數據庫 > SQL Server > 正文

SQL Server 公用表表達式(CTE)實現遞歸的方法

2024-08-31 01:04:53
字體:
來源:轉載
供稿:網友

公用表表達式簡介:

公用表表達式 (CTE) 可以認為是在單個 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 語句的執行范圍內定義的臨時結果集。CTE 與派生表類似,具體表現在不存儲為對象,并且只在查詢期間有效。與派生表的不同之處在于,公用表表達式 (CTE) 具有一個重要的優點,那就是能夠引用其自身,從而創建遞歸 CTE。遞歸 CTE 是一個重復執行初始 CTE 以返回數據子集直到獲取完整結果集的公用表表達式。

下面先創建一個表,并插入一些數據:

create table Role_CTE( Id  int    not null, Name nvarchar(32) not null, ParentId int  not null )insert into Role_CTE(Id,Name,ParentId)select '1','超級管理員','0' union select '2','管理員A','1' union select '3','管理員B','2' union select '4','會員AA','2' union select '5','會員AB','2' union select '6','會員BA','3' union select '7','會員BB','3' union select '8','用戶AAA','4' union select '9','用戶BBA','7' -- 創建一個復合聚集索引create clustered index Clu_Role_CTE_Indexon Role_CTE(Id,ParentId)with( pad_index=on, fillfactor=50, drop_existing=off, statistics_norecompute=on)select * from Role_CTE

sqlserver,cte,遞歸,sql,server,公用表達式

查找指定節點的所有子孫節點:

使用普通 sql 語句實現:

declare @level intdeclare @node intdeclare @ResTab table( node int not null, lv  int not null )set @level=0  -- 表示初始的等級set @node=3   --表示初始的節點ID,即從指定的哪個節點開始查找insert into @ResTab    -- 為表變量插入初始的數據select Id,@level from Role_CTE where Id=@nodewhile(@@ROWCOUNT>0)begin set @level=@level+1 insert into @ResTab select b.Id,@level  from @ResTab a  join Role_CTE b on a.node=b.ParentId and lv=@level-1 -- join 等于 inner join(內連接)和自連接endselect a.node,b.Name,a.lv from @ResTab a left join Role_CTE b on a.node=b.Id

sqlserver,cte,遞歸,sql,server,公用表達式

以上是根據指定節點ID(3),查找父節點ID(即字段 ParentId)等于指定的節點ID,如果有就插入,并繼續循環。

PS:lv=@level-1 是重點,不然會進入死循環,作用就是限制只插入一次。

如果需要限制循環的次數,即遞歸的層數,那么只需要在 while 條件里面添加一個限制即可。如下:

declare @level intdeclare @node intdeclare @num intdeclare @ResTab table( node int not null, lv  int not null )set @level=0  -- 表示初始的等級set @node=3   --表示初始的節點ID,即從指定的哪個節點開始查找set @num=1  -- 指定遞歸層級,即循環的次數insert into @ResTab    -- 為表變量插入初始的數據select Id,@level from Role_CTE where Id=@nodewhile(@@ROWCOUNT>0 and @level<@num)begin set @level=@level+1 insert into @ResTab select b.Id,@level  from @ResTab a  join Role_CTE b on a.node=b.ParentId and lv=@level-1 -- join 等于 inner join(內連接)和自連接endselect a.node,b.Name,a.lv from @ResTab a left join Role_CTE b on a.node=b.Id

sqlserver,cte,遞歸,sql,server,公用表達式

當然,如果指定了循環次數,就可以不用 while 判斷語句的 @@rowcount>0 了。

使用 SQL CTE 實現:

declare @node int set @node=3;with temp_cteas( select Id,Name,0 lv  -- 查詢出“根節點”,即指定的起始節點 from Role_CTE  where Id=@node  union all select b.Id,b.Name,a.lv+1  from temp_cte a  join Role_CTE b on a.Id=b.ParentId)select * from temp_cte

sqlserver,cte,遞歸,sql,server,公用表達式

使用 CTE 控制遞歸的層數,與上面類似。如下:

declare @node int declare @num intset @node=3;set @num=1;with temp_cteas( select Id,Name,0 lv  -- 查詢出“根節點”,即指定的起始節點 from Role_CTE  where Id=@node  union all select b.Id,b.Name,a.lv+1  from temp_cte a  join Role_CTE b on a.Id=b.ParentId     and a.lv<@num  --控制遞歸層數)select * from temp_cte

sqlserver,cte,遞歸,sql,server,公用表達式

查找指定節點的所有祖先節點:

使用普通 sql 語句實現:

declare @level intdeclare @node intdeclare @num intdeclare @ResTab table( node int not null, lv  int not null )set @level=0 -- 表示初始的等級set @node=8   --表示初始的節點ID,即從指定的哪個節點開始查找set @num=2  -- 指定遞歸層級,即循環的次數while(@level<=@num and @node is not null) -- 如果為空就表示沒有查到父級了begin insert into @ResTab select @node,@level set @level=@level+1 select @node=ParentId  from Role_CTE  where Id=@nodeendselect a.node,b.Name,a.lv from @ResTab a left join Role_CTE b on a.node=b.Id

sqlserver,cte,遞歸,sql,server,公用表達式

使用 SQL CTE 實現:

declare @node int declare @num intset @node=8;set @num=2;with temp_cteas( select Id,Name,ParentId,0 lv  -- 查詢出“根節點”,即指定的起始節點 from Role_CTE  where Id=@node  union all select b.Id,b.Name,b.ParentId,a.lv+1  from temp_cte a  join Role_CTE b on a.ParentId=b.Id     and a.lv < @num  --控制遞歸層數)select * from temp_cte

sqlserver,cte,遞歸,sql,server,公用表達式

以上所述是小編給大家介紹的SQL Server 公用表表達式(CTE)實現遞歸的方法,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的,在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国内国产区免费视频| 国产欧美日韩亚州综合| 亚洲深夜福利| 91精品国产色综合久久不卡蜜臀 | 91精品在线视频观看| 亚洲第一视频| 在线看的av| 成年人黄国产| 中文在线а√在线8| 中文字幕狠狠干| 久久精品久久精品国产大片| 91久久精品视频| 午夜一区二区三区视频| 日韩国产专区| 中文精品视频| 日韩免费电影网站| 久久99蜜桃精品久久久久小说| 国产欧美日韩中文字幕| 欧美日韩在线国产| 国产超级va在线视频| 国产香蕉免费精品视频| 在线一区二区三区精品| 久久99蜜桃精品久久久久小说| 国内国产区免费视频| 欧美成人一区二区| 亚洲精品中文字幕乱码三区| 一区精品在线播放| 精品免费久久久| 福利在线国产| 国产欧美日韩不卡| 国产免费永久在线观看| 日韩区欧美区| 日韩精品视频在线观看视频| 顶级网黄在线播放| 久久久99免费| 国产中文在线视频| 日韩欧美在线视频日韩欧美在线视频 | 日韩av二区| 在线不卡一区二区| 国产视频中文字幕在线观看| 香蕉精品久久| 91精品婷婷国产综合久久竹菊| 日韩在线 中文字幕| 久精品在线观看| 一区三区二区视频| 亚洲国产www| 日韩欧美在线1卡| 国产自产视频| 欧美日韩中文字幕在线观看| 国产久卡久卡久卡久卡视频精品| 午夜福利一区二区三区| 中文av字幕一区| 高清在线一区| 欧美在线观看视频一区| 92久久精品| 亚洲 欧美 日韩系列| 欧美一级一级性生活免费录像 | 999精品在线| 日韩欧美亚洲国产| 日本中文字幕在线观看| 欧美日韩精品免费看| 亚洲黄色片在线观看| 免费视频久久| 伊人www22综合色| av手机天堂| 在线精品观看| 久久久99久久| 国产欧美日韩亚洲| 日韩视频 中文字幕| www日韩欧美| 久久精品日韩无码| 影音先锋一区二区资源站| 日韩国产欧美亚洲| 中文字幕在线观看欧美| 欧美日韩在线精品成人综合网| 成人a在线视频免费观看| 一级片在线播放| 国产乱码午夜在线视频| 九九精品调教| 日韩精品视频免费在线观看| 久久电影国产免费久久电影| 欧美日韩精品在线播放| 日韩精品福利视频| 久久久精品福利| 日韩三级一区| 久久99精品久久久久子伦| 国产视频aaa| 99精品电影| 亚洲成av人片| 精人妻一区二区三区| 91吃瓜在线观看| 91精品在线国产| 韩国v欧美v日本v亚洲| 国产三级视频网站| 视频一区二区不卡| 欧美日韩性视频| 国产www.大片在线| 欧美一级在线免费| 91久久在线| 韩国v欧美v日本v亚洲| 日韩午夜中文字幕| 黄污视频在线看| 精品日韩一区二区三区免费视频| 自拍日韩亚洲一区在线| 97久久精品| 欧美日韩在线观看一区| 在线国产1区| 不卡视频一区二区三区| 另类专区欧美| 一区二区视频在线观看免费的| 亚洲一区在线观看免费| 精品久久九九| 亚洲视频色图| 国产黄色在线网站| 欧美日韩中文字幕精品| 精品网站999| 日韩亚洲国产欧美| 日韩欧美中文| 激情婷婷亚洲| 日韩欧美专区在线| 欧美日本精品| 国产乱国产乱300精品| 国产亚洲视频中文字幕视频| 亚洲视频日韩| 国产乱码午夜在线视频| 91久久精品国产91性色69| 欧美三级在线播放| 久久婷婷国产| 在线亚洲免费| 欧美日韩在线中文字幕| 欧美日韩在线播放视频| 中文字幕欧美日韩精品| 国产在线高清精品| 九九视频精品免费| 国产99在线|亚洲| 中文字幕视频在线免费欧美日韩综合在线看| 樱花草www在线| 二区视频在线观看| 中文字幕欧美日韩在线不卡| 欧美中文字幕在线视频| 中文字幕在线观看视频www| 第一页在线观看| 亚洲区中文字幕| 久久婷婷中文字幕| 中文字幕在线高清| 欧美日韩视频免费播放| 高清1区2区| 精品亚洲综合| 欧美三级日韩三级| 日本啊v在线| 欧美久久一二三四区| 中文字幕精品一区二| 日韩免费视频一区| 国产一二三视频| 色猫猫国产区一区二在线视频| 国产欧美日韩中文字幕在线| 日韩精品一级| 欧美日韩在线精品成人综合网| 午夜伦欧美伦电影理论片| 国产高清在线视频| 欧美国产日韩在线播放| 婷婷综合福利| 精品国产1区2区3区| 精品日韩在线观看| 国产婷婷色一区二区三区在线| 视频一区不卡| 欧美国产三级| 中文字幕精品在线| 欧美国产一级| 在线视频一区二区三区在线播放| 欧美日韩中国免费专区在线看| 欧美乱大交xxxxx免费| 久久韩国免费视频| 91精品国产91久久| 亚洲专区一二三| 婷婷久久综合九色国产成人| 国产一区不卡精品| 久久久精品日韩欧美| 91精品国产91久久久久久青草| 精品熟女一区二区三区| 国产无套粉嫩白浆在线2022年| 99精品在线播放| 久久中文免费视频| 91精品999| 日韩一级免费在线观看| 中文字幕亚洲乱码| 欧美sm一区| 国产欧美日韩在线| 精品一二三四区| 精品久久久精品| 91精品视频播放| 国产字幕中文| 欧美.日韩.国产.一区.二区| 精品999在线| 搞黄在线观看| 日韩欧美中文免费| 日韩久久精品视频| 视频一区二区不卡| 国产伦精品免费视频| av免费网站在线观看| 国产高清一区| 国产一级在线播放| 欧美高清一区| 91精品婷婷国产综合久久| 日韩一级视频在线观看| 日本不卡高清视频一区| 日韩视频在线一区| 欧美日韩国产一二三| 亚洲欧洲在线观看av| 蜜桃视频中文字幕| 国产一二三视频| 日韩av在线中文字幕| 国产激情在线播放| 亚洲黄在线观看| 国产欧美日韩在线视频| 国产免费久久久| 国产亚洲一级| 天堂在线中文资源| 欧美日韩在线视频免费观看 | 日韩视频在线观看一区| 欧美日韩久久不卡| 久久韩国免费视频| 一本一道综合狠狠老| 国产色在线 com| 精品视频三区| 欧美中文字幕在线观看视频| 色综合天天性综合| 91精品国产自产观看在线| 日韩三级视频在线播放| 91精品免费看| a视频在线播放| 日韩中文字幕在线视频播放| 一区二区三区精品在线| 中文字幕视频在线免费欧美日韩综合在线看| 免费国产h视频在线观看86| 国产一级视频| 日韩国产欧美| 日韩精品在线网站| 中文字幕在线精品| 久久久精品日韩欧美| 一区二区日韩av| 日韩av一区二区在线| 午夜av一区| 日韩精品视频免费在线观看| 亚洲 欧美综合在线网络| 久久精品一二三| 欧美日韩精品免费| 欧美婷婷久久| 国产福利一区二区在线精品| 日韩欧美高清在线| 欧美三级免费观看| 欧美日韩精品不卡| 欧美在线视频一区二区| 亚洲高清在线免费| 久艹在线视频| 日韩一级二级三级| 免费看ww视频网站入口| 中文字幕在线观看精品| 99这里有精品视频| 中文字幕精品www乱入免费视频| 精品av中文字幕在线毛片| 中文字幕在线视频第一页| 亚洲欧洲日韩精品在线| 精品中文在线| 国产伦精品免费视频| 欧美日韩国产一二| 欧美另类专区| 日韩久久不卡| 中文字幕在线精品| av中文资源在线| 快she精品国产999| 午夜一区二区三区视频| 久久视频一区| 伊人网站在线| 国产资源在线观看入口av| 在线不卡日本| 国产欧美日韩最新| www在线播放| 国产成人综合av| 日韩欧美亚洲国产| 亚洲成av人综合在线观看| 精品一性一色一乱农村| 日韩一二三四区| 精品网站999www| 日韩你懂的电影在线观看| 不卡av免费在线| 欧美日韩午夜在线视频| 欧美日韩性视频一区二区三区| 精品久久电影| 国产成人精品日本亚洲专区61| wwwwww在线观看| 久久人人88| 不卡福利视频| 国产在线中文字幕| 欧美日韩国产高清视频| 色欧美日韩亚洲| 国产不卡一区| 精品对白一区国产伦| 国产欧美日韩视频在线| 国产日韩精品在线看| 亚洲视频 中文字幕| 欧美日韩国产中文| 一区二区日韩av| 欧美日韩高清在线| 亚洲娇小xxxx欧美娇小| 国产资源在线观看入口av| 999精品网| 日韩国产欧美在线视频| 国产亚洲一级| 欧美日韩高清一区二区| 欧美婷婷久久| 国产一级免费在线观看| 日韩视频1区| 久久精品免费在线观看| 尤物av一区二区| 国产一级在线免费观看| 97caopor国产在线视频| 欧美日韩在线三级| 91久久视频| 欧美日韩高清在线一区| 在线国产日本| 久久精品一级爱片| wwwav在线播放| 国产视频不卡| 亚洲一区资源| 欧美精品一区二区三区在线播放| 国产在线欧美| wwwwww国产| 精品一区二区在线观看视频| 国产成人一区二区精品非洲| 日韩在线视频一区| 国产黄色网页| 一区在线播放视频| 国产小视频免费在线观看| 欧美日韩精品电影| 欧美日韩国产免费观看视频| 欧美日韩国产在线| 国产69精品久久久久孕妇国产69久久| 国产视频一区三区| 91精品久久久久久蜜臀| 日本黄色一区二区三区| 日韩av一区二| 精品人妻一区二区三区视频| 欧洲精品在线一区| 蜜桃视频中文字幕| 日韩中文字幕视频在线观看| 国产在线看一区| 精品欧美不卡一区二区在线观看| 国产午夜精品久久| 国产网站欧美日韩免费精品在线观看| 精品久久久精品| 精品日韩在线| 在线视频观看日韩| a√免费观看在线网址www| 亚洲国产综合久久| 日韩精品久久久| 欧美亚洲国产激情| 97国产视频| 欧美久久久久久蜜桃| 午夜成人鲁丝片午夜精品| 日本不卡免费高清视频| 日韩欧美亚洲视频| 欧美一级一级性生活免费录像| 亚洲福利在线看| 日韩欧美在线看| 99精品视频99| 亚洲电影中文字幕在线观看| 国产成人精品三级| 国产 欧美 日韩 在线| 久久精品久久精品亚洲人| 日韩国产欧美在线视频| 91欧美日韩在线| 成年人看的羞羞网站| 先锋男人资源站| 亚洲开心激情| 一区二区91| 91精品在线免费| 中文字幕 亚洲一区| 国产在线观看a| 国产欧美日韩成人| 92久久精品| 欧美激情一区二区三区在线| 成人福利一区| 7799精品视频天天看| 午夜国产福利在线观看| 亚洲成av人片一区二区密柚| 欧美不卡123| 免费高清特黄a大片| 亚洲福利在线观看| 日韩在线观看视频一区二区| 日韩在线播放一区二区| 亚洲高清视频一区| 成人ww免费完整版在线观看| 亚洲第一中文字幕| 中文字幕在线观看国产| 一区二区三区高清在线| 在线观看国产一级片| 欧美日韩精品电影| 1区2区在线| 色99中文字幕|