下載吧 - 綠色安全的游戲和軟件下載中心

          軟件下載吧

          當前位置:軟件下載吧 > 數據庫 > MS_SQL > SQL開發知識:SqlServer使用公用表表達式CTE實現無限級樹形構建

          SQL開發知識:SqlServer使用公用表表達式CTE實現無限級樹形構建

          時間:2024-03-13 13:57作者:下載吧人氣:38

          SQL Server 2005開始,我們可以直接通過CTE來支持遞歸查詢,CTE即公用表表達式

          公用表表達式(CTE),是一個在查詢中定義的臨時命名結果集將在from子句中使用它。每個CTE僅被定義一次(但在其作用域內可以被引用任意次),并且在該查詢生存期間將一直生存。可以使用CTE來執行遞歸操作。

          DECLARE @Level INT=3

          ;WITH cte_parent(CategoryID,CategoryName,ParentCategoryID,Level)
          AS
          (
          SELECT category_id,category_name,parent_category_id,1 AS Level
          FROM TianShenLogistic.dbo.ProductCategory WITH(NOLOCK)
          WHERE category_id IN
          (
          SELECT category_id
          FROM TianShenLogistic.dbo.ProductCategory
          WHERE parent_category_id=0
          )
          UNION ALL
          SELECT b.category_id,b.category_name,b.parent_category_id,a.Level+1 AS Level
          FROM TianShenLogistic.dbo.ProductCategory b
          INNER JOIN cte_parent a
          ON a.CategoryID = b.parent_category_id
          )

          SELECT
          CategoryID AS value,
          CategoryName as label,
          ParentCategoryID As parentId,
          Level
          FROM cte_parent WHERE Level <=@Level;
          public static List<LogisticsCategoryTreeEntity> GetLogisticsCategoryByParent(int? level)
          {
          if (level < 1) return null;

          var dataResult = CategoryDA.GetLogisticsCategoryByParent(level);
          var firstlevel = dataResult.Where(d => d.level == 1).ToList();
          BuildCategory(dataResult, firstlevel);
          return firstlevel;
          }

          private static void BuildCategory(List<LogisticsCategoryTreeEntity> allCategoryList, List<LogisticsCategoryTreeEntity> categoryList)
          {
          foreach (var category in categoryList)
          {
          var subCategoryList = allCategoryList.Where(c => c.parentId == category.value).ToList();
          if (subCategoryList.Count > 0)
          {
          if (category.children == null) category.children = new List<LogisticsCategoryTreeEntity>();
          category.children.AddRange(subCategoryList);
          BuildCategory(allCategoryList, category.children);
          }
          }
          }

          標簽MSSQL,SQLServer,技術文檔,數據庫,SQLSERVER

          相關下載

          查看所有評論+

          網友評論

          網友
          您的評論需要經過審核才能顯示

          熱門閱覽

          最新排行

          公眾號

          主站蜘蛛池模板: 中文字幕一区二区日产乱码| 久久久久成人精品一区二区| 本免费AV无码专区一区| 视频精品一区二区三区| 精品人妻一区二区三区四区| 国精品无码A区一区二区| 中文字幕人妻无码一区二区三区 | 日本一区二区三区日本免费 | 无码国产精品一区二区免费虚拟VR| 精品国产乱子伦一区二区三区| 亚洲高清一区二区三区电影| 天堂一区人妻无码| 一区二区福利视频| 精品永久久福利一区二区| 国产品无码一区二区三区在线蜜桃| 中文字幕av人妻少妇一区二区| 无码成人一区二区| 国产成人精品日本亚洲专一区| 日韩人妻不卡一区二区三区| 无码人妻久久一区二区三区免费丨| 国产精品成人免费一区二区| 国产亚洲欧洲Aⅴ综合一区| 亚洲一区动漫卡通在线播放| 视频一区二区三区免费观看 | 国产福利电影一区二区三区,免费久久久久久久精 | 日本v片免费一区二区三区| 亚洲一区二区影视| 无码一区二区三区AV免费| 亚洲国产AV一区二区三区四区 | 国产伦精品一区二区三区无广告 | 水蜜桃av无码一区二区| 在线视频一区二区| 日韩社区一区二区三区| 日本内射精品一区二区视频| 日韩精品一区二区三区中文版| 精品国产亚洲一区二区三区| 国产一区二区三区美女| 国精品无码一区二区三区左线| 免费无码一区二区三区蜜桃大 | 久久综合亚洲色一区二区三区| 精品国产一区二区三区免费看|