国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

SqlServer使用公用表表達式(CTE)實現(xiàn)無限級樹形構建

2024-08-31 01:05:04
字體:
來源:轉載
供稿:網(wǎng)友

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

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

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, LevelFROM 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教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 武胜县| 马公市| 安远县| 伊宁市| 阜阳市| 云梦县| 河曲县| 错那县| 姚安县| 平远县| 出国| 苍梧县| 兰坪| 滦南县| 宝丰县| 濮阳市| 衡山县| 长兴县| 治多县| 建阳市| 镇赉县| 灌阳县| 桓仁| 吉林省| 武陟县| 兴山县| 资中县| 宁强县| 清苑县| 盐津县| 吴川市| 保靖县| 栖霞市| 南京市| 扶风县| 邵阳市| 许昌市| 龙岩市| 黑河市| 肥城市| 肥城市|