SqlServer树型数据表重新整理排序语句

孤街浪徒 提交于 2020-01-09 17:05:03

Declare @editTableName varchar(50)--表名
Declare @mainFieldName varchar(50)--主键字段名称
Declare @fjIdFieldName varchar(50)--上级字段名称
Declare @sortFieldName varchar(50)--排序字段名称
Declare @updatedString nvarchar(max)
Declare @updateString1 varchar(4000)
Declare @updateString2 varchar(4000)
Select @editTableName='SystemClass'
Select @mainFieldName='Id'
Select @fjIdFieldName='ParentId'
Select @sortFieldName='SortNumber'
Select @updateString1='(Select t1.['+@mainFieldName+'],ROW_NUMBER() OVER(ORDER BY t1.['+@sortFieldName+'] Asc,t1.['+@mainFieldName+'] ASC) as newSortNumber from ['+@editTableName+'] t1 where t1.['+@fjIdFieldName+']=['+@editTableName+'].['+@fjIdFieldName+']) o1'
Select @updateString2='Select top 1 o1.newSortNumber From '+@updateString1+' Where o1.['+@mainFieldName+']=['+@editTableName+'].['+@mainFieldName+']'
Select @updatedString='Update ['+@editTableName+'] Set ['+@sortFieldName+']=IsNull(('+@updateString2+'),1)'
Exec(@updatedString)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!