亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

【吐血分享】SQL Server With As 遞歸獲取層級關系數據

2024-08-31 00:55:44
字體:
來源:轉載
供稿:網友
【吐血分享】SQL Server With As 遞歸獲取層級關系數據

純潔的一周又開始了,今天看到一則新聞,笑尿了,和袁友們一起娛樂下

最近兩月在做基于Saas模式的人力資源管理產品,平常數據庫設計我經常會遇到如下需求場景:

  1. 以前商城類網站在設計類型表的時候,設計成單表來存儲商品類型數據,每條記錄擴展一個父類型的ID,來體現層級關系。(電商網站常用)
  2. 最近在做人事管理系統中,企業的人員信息保存在一張表中,而企業的層級關系也是通過在用戶表中擴展一個當前記錄用戶直接上級的標識

此種場景下就經常會出現一個業務場景,這些數據怎么去獲取層級關系呢?當前已知ID,怎么獲取他的子節點數據呢?怎么獲取父節點的數據呢?

LZ也不賣關子了,就是如題所說的使用WITH AS語句,它可以提高性能簡化嵌套SQL,而且多級遞歸有時候嵌套SQL都很難下手,LZ以前甚至在應用程序中用C#遞歸獲取數據的笨方法。

WITH AS的含義

WITH AS短語,也叫做子查詢部分(subquery factoring),可以讓你做很多事情,定義一個SQL片斷,該SQL片斷會被整個SQL語句所用到。有的時候,是為了讓SQL語句的可讀性更高些,也有可能是在UNION ALL的不同部分,作為提供數據的部分。 特別對于UNION ALL比較有用。因為UNION ALL的每個部分可能相同,但是如果每個部分都去執行一遍的話,則成本太高,所以可以使用WITH AS短語,則只要執行一遍即可。如果WITH AS短語所定義的表名被調用兩次以上,則優化器會自動將WITH AS短語所獲取的數據放入一個TEMP表里,如果只是被調用一次,則不會。而提示materialize則是強制將WITH AS短語里的數據放入一個全局臨時表里。很多查詢通過這種方法都可以提高速度。

下面就上面提到的第二個應用場景來詳細介紹下:

  1. 創建一張企業員工表,表數據庫設計如下:
     1 CREATE TABLE [dbo].[Employee]( 2     [ID] [uniqueidentifier] NOT NULL,--用戶ID 3     [EnterPRiseCode] [uniqueidentifier] NOT NULL,--企業標識 4     [ParentGUID] [uniqueidentifier] NOT NULL,--上級ID 5     [ECode] [nvarchar](50) NOT NULL,--員工編號 6     [EName] [nvarchar](200) NOT NULL--員工名稱 7  CONSTRAINT [PK_Employee] PRIMARY KEY CLUSTERED  8 ( 9     [ID] ASC10 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]11 ) ON [PRIMARY]12 13 GO
  2. 插入初始數據如下
      1 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'5b82d74d-c5c7-4cbb-af28-0518bdc257d9', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'00000000-0000-0000-0000-000000000000', N'SG0012', N'張志軍')  2 GO  3 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'0cd19311-2ca1-4120-9554-11bfd8219af9', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'5b82d74d-c5c7-4cbb-af28-0518bdc257d9', N'KP10035', N'杜高揚')  4 GO  5 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'dd994fda-1703-4616-af1b-165164df710e', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'5b82d74d-c5c7-4cbb-af28-0518bdc257d9', N'SG0005', N'趙賓 ')  6 GO  7 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'ef7c0c60-2545-4c5a-baa6-1a0eec3557b3', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'5b82d74d-c5c7-4cbb-af28-0518bdc257d9', N'KP10029', N'屠玉韻')  8 GO  9 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'557c113a-786a-4dbc-9eb6-1aa80cfd9e68', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'5b82d74d-c5c7-4cbb-af28-0518bdc257d9', N'0119', N'陳佳楠') 10 GO 11 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'c5b58ce6-96b7-496d-bceb-1e7c659badbd', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'80012614-b153-4bc6-b5da-0db244cccf9b', N'SG0001', N'張忠榮') 12 GO 13 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'5c8214ec-258b-4c44-9f31-206e499f0285', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'0cd19311-2ca1-4120-9554-11bfd8219af9', N'0129', N'孫躍光') 14 GO 15 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'df5d082c-baa3-4315-b234-209b50c37e7a', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'0cd19311-2ca1-4120-9554-11bfd8219af9', N'0109', N'姚宇') 16 GO 17 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'5d68e6c2-6e7e-4608-8cd2-234557fcacef', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'0cd19311-2ca1-4120-9554-11bfd8219af9', N'KP10040', N'賀雅柔') 18 GO 19 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'9627fdcf-affa-424b-b1ca-24538b101986', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'0cd19311-2ca1-4120-9554-11bfd8219af9', N'0120', N'簡婧暉') 20 GO 21 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'6eccd0ec-11ad-45e3-98b6-2457cf61da2e', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'dd994fda-1703-4616-af1b-165164df710e', N'KP10027', N'苗英叡') 22 GO 23 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'1416b56c-d54a-41eb-83c2-25573cb25f4b', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'dd994fda-1703-4616-af1b-165164df710e', N'KP10013', N'柴天元') 24 GO 25 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'868030db-7f25-4bc0-8ff7-259759426250', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'dd994fda-1703-4616-af1b-165164df710e', N'0114', N'師萱倩') 26 GO 27 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'a81a9114-b7c9-41b6-818e-2a418e3dd14d', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'dd994fda-1703-4616-af1b-165164df710e', N'0125', N'張懷寶') 28 GO 29 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'166fa95a-0425-40e3-8cb9-2a4c97ca4cc6', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'ef7c0c60-2545-4c5a-baa6-1a0eec3557b3', N'KP10025', N'邵樂家') 30 GO 31 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'6e94aa52-700a-4415-bb8a-34345605e13d', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'ef7c0c60-2545-4c5a-baa6-1a0eec3557b3', N'SG0011', N'李恒釣') 32 GO 33 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'c5e537d4-0994-43e2-a1ab-3f736b4e22d3', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'ef7c0c60-2545-4c5a-baa6-1a0eec3557b3', N'KP10015', N'龔高朗') 34 GO 35 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'61f79eaf-db86-425e-a61c-4228265eec28', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'ef7c0c60-2545-4c5a-baa6-1a0eec3557b3', N'KP10038', N'卜婉慧') 36 GO 37 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'34c26725-3726-4c45-90c0-440c91ef34b8', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'ef7c0c60-2545-4c5a-baa6-1a0eec3557b3', N'0105', N'蘇曉會') 38 GO 39 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'3d09264c-5a0d-46fd-b924-443585ad61bc', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'557c113a-786a-4dbc-9eb6-1aa80cfd9e68', N'KP10026', N'夏成龍') 40 GO 41 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'30b558f3-be74-4127-b91f-444e858ef9ff', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'557c113a-786a-4dbc-9eb6-1aa80cfd9e68', N'KP10004', N'馬樂意') 42 GO 43 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'4b1d5979-1ef7-4927-9b6b-44f151d2d803', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'557c113a-786a-4dbc-9eb6-1aa80cfd9e68', N'0110', N'劉文強') 44 GO 45 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'bdc8cbdc-3511-41dc-899c-4b61969ff65c', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'c5b58ce6-96b7-496d-bceb-1e7c659badbd', N'0107', N'徐連翔') 46 GO 47 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'ee09d65c-8780-4736-b636-4d9335bfdd80', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'c5b58ce6-96b7-496d-bceb-1e7c659badbd', N'KP10028', N'銀嘉樹') 48 GO 49 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'94e3071a-6b00-4f53-9dd0-4fe0fc9bef51', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'c5b58ce6-96b7-496d-bceb-1e7c659badbd', N'0126', N'趙碩') 50 GO 51 INSERT [dbo].[Employee] ([ID], [EnterpriseCode], [ParentGUID], [ECode], [EName]) VALUES (N'123580a5-25c7-4315-b75b-584e86fe945e', N'06bc0b1c-25b8-4d62-a1d6-ac7be1becf56', N'c5b58ce6-96b7-496d-bceb-1e7c659badbd', N'KP10018', N'
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av在线网站| 色老头一区二区三区| 精品亚洲一区二区三区在线播放| xvideos亚洲| 91国偷自产一区二区三区的观看方式| 欧美日韩亚洲精品一区二区三区| 最近2019中文字幕第三页视频| 亚洲人在线观看| 色偷偷91综合久久噜噜| 欧美日韩一区二区在线| 韩国视频理论视频久久| 久久精彩免费视频| 久久久精品久久久久| 成人乱人伦精品视频在线观看| 2019日本中文字幕| 亚洲人成亚洲人成在线观看| 国产成人精品日本亚洲专区61| 精品国产区一区二区三区在线观看| 国产精品成人免费视频| 91高清视频免费观看| 精品二区三区线观看| 日韩高清电影免费观看完整版| 这里只有精品视频在线| 97在线精品国自产拍中文| 精品久久久精品| 韩国三级电影久久久久久| 日本最新高清不卡中文字幕| 日韩成人在线视频| 97香蕉超级碰碰久久免费软件| 国产一区二区在线免费视频| 91精品在线影院| www国产精品视频| 91免费看片在线| 91久久国产综合久久91精品网站| 欧美大尺度电影在线观看| 精品小视频在线| 亚洲人在线视频| 日韩中文字幕在线观看| 国内精品久久久久久久| 欧美日韩成人精品| 欧美亚洲日本黄色| 欧美精品久久久久久久| 97视频在线观看免费| 亚洲精品短视频| 亚洲欧美制服第一页| 成人欧美一区二区三区在线湿哒哒| 国产乱肥老妇国产一区二| 精品国产欧美一区二区五十路| 国产精品自产拍在线观看中文| 亚洲综合精品伊人久久| 国产精品欧美激情在线播放| 国产精品海角社区在线观看| 中文字幕日韩精品在线| 美女福利视频一区| 精品国产一区二区三区久久狼黑人| 欧美大肥婆大肥bbbbb| 91福利视频在线观看| 成人精品aaaa网站| 亚洲欧洲国产一区| 欧美裸体视频网站| 欧美日韩亚洲精品内裤| 亚洲xxxx18| 97婷婷涩涩精品一区| 久久久久久18| 91日本在线观看| 国产一区二区丝袜| 国产脚交av在线一区二区| 精品成人av一区| 欧美香蕉大胸在线视频观看| 91久久精品国产91久久| 国产精品wwww| 欧美日韩性生活视频| 亚洲一区999| 国产97在线视频| 国产日本欧美一区| 高清欧美电影在线| 欧美在线一级va免费观看| 日韩欧美中文字幕在线播放| 日韩乱码在线视频| 欧美天堂在线观看| 91视频九色网站| 欧美日韩日本国产| 国产精品视频一| 欧美日韩亚洲精品一区二区三区| 97香蕉超级碰碰久久免费软件| 国产综合在线观看视频| 日韩av在线免费观看一区| 欧美激情视频网址| 久久91亚洲精品中文字幕| 精品综合久久久久久97| 欧美黑人一级爽快片淫片高清| 国产精品自在线| 欧美乱大交做爰xxxⅹ性3| 亚洲欧美在线播放| 日韩最新中文字幕电影免费看| 亚洲精品日韩久久久| 国产精品第一页在线| 国产91av在线| 欧美特黄级在线| 亚洲精品av在线播放| 久久精品在线视频| 91精品国产高清自在线看超| 欧美高清一级大片| 亚洲电影在线看| 欧美一区二区三区免费视| 91精品国产乱码久久久久久久久| 欧美性少妇18aaaa视频| 亚洲视频在线看| 亚洲精品视频中文字幕| 日本a级片电影一区二区| 91中文字幕在线| 日韩av大片在线| 高潮白浆女日韩av免费看| 欧美精品免费在线观看| 日韩久久免费电影| 日韩成人中文字幕在线观看| 日韩中文字幕在线观看| 日韩激情av在线免费观看| 福利一区福利二区微拍刺激| 91精品国产电影| 九九视频这里只有精品| 精品人伦一区二区三区蜜桃网站| 青青草原一区二区| 亚洲新中文字幕| 日韩有码视频在线| 久久91精品国产91久久久| 懂色aⅴ精品一区二区三区蜜月| 狠狠久久亚洲欧美专区| 亚洲永久免费观看| 日韩美女在线观看| 久久久午夜视频| 亚洲网站在线播放| 国产日韩在线视频| 亚洲综合国产精品| 国产日韩在线播放| 日日噜噜噜夜夜爽亚洲精品| 国产精品久久中文| 国产亚洲精品综合一区91| 国产精品成人观看视频国产奇米| 中文字幕日韩综合av| 欧美激情乱人伦一区| 美女999久久久精品视频| 乱亲女秽乱长久久久| 亚洲深夜福利视频| 欧美日韩激情网| 国产成人91久久精品| 国产精品露脸av在线| 高清欧美一区二区三区| 国产欧美va欧美va香蕉在线| 国产suv精品一区二区三区88区| 国产精品色婷婷视频| 成人性生交xxxxx网站| 日韩美女在线观看一区| 亚洲欧洲自拍偷拍| 国产成人精品在线视频| 久久久久久久久国产精品| 国产成人精彩在线视频九色| 神马久久桃色视频| 亚洲成色777777女色窝| 国产中文字幕亚洲| 久久777国产线看观看精品| 国产精品日韩在线播放| 亚洲欧美日韩爽爽影院| 日韩在线免费视频|