您好,欢迎访问代理记账网站
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

SQL SERVER树状结构排序

-- 递归查询数据, 排序的主要思想是每一层的节点的排序字段长度对齐, 这样就可以按照字符串的字典序来排序
 WITH TAB AS(
	SELECT ID, parentId, rowNumber = ROW_NUMBER() OVER(ORDER BY ID) FROM [tableName] WHERE parentId IS NULL
	UNION ALL
	SELECT S.ID, S.parentId, rowNumber = ROW_NUMBER() OVER(ORDER BY ID) FROM [tableName] S INNER JOIN TAB P
	ON S.parentId = P.ID 
-- 再递归排序, RIGHT(CONCAT('00000', rowNumber), 5)表示每层最多有99999个节点(rowNumber 1-99999), 
 ), TAB1 AS(
	SELECT ID, orderId = RIGHT(CONCAT('00000', rowNumber), 5) FROM TAB WHERE parentId IS NULL
	UNION ALL
	SELECT S.ID, orderId = P.orderId + RIGHT(CONCAT('00000', rowNumber), 5) FROM TAB S INNER JOIN TAB1 P ON S.parentId = P.ID
 )SELECT * FROM TAB1 ORDER BY orderId

 


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进