设为首页 加入收藏

TOP

排序
2014-11-24 03:07:36 来源: 作者: 【 】 浏览:2
Tags:排序
--编写排序的问题,例如 1、2、3、4、5、6这样的排列号
--思路:(1)如果1变成5,那么就是1直接变5,2、3、4、5 分别减1,6不变
--(2)如果5变成3,那么5直接变成3,1、2不变,3、4减1,6不变
--(3)例如:3变成6,那么6是目标值,3是欲成为目标的值
--(4)用事务或者存储过程实现
--(5)要传的参数分别是:表名,目标值,欲成为目标的值,标识列(例如ID)

Create proc [dbo].[pro_woqu]
@ID int ,--ID值
@targetValue int ,--目标值
@wishtargetValue int,--欲成为目标的值
@tableName varchar(100)

as
begin tran
update [User] set DisplayOrder=@targetValue where ID=@ID;
if(@targetValue<@wishtargetValue)--如果5变成3,那么5直接变成3,1、2不变,3、4减1,6不变
begin 
update [User]set DisplayOrder=DisplayOrder+1 where DisplayOrder>=@targetValue and DisplayOrder<@wishtargetValue and ID!=@ID and ParentID=0
end
if(@targetValue>@wishtargetValue)--3变成6,那么6是目标值,3是欲成为目标的值
begin
update [User]set DisplayOrder=DisplayOrder-1 where DisplayOrder<=@targetValue and DisplayOrder>@wishtargetValue and ID!=@ID and ParentID=0
end
if @@error<>0
 begin  rollback tran
return 0
end
else 
begin commit tran
return 1
end

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇QlikView实现部分加载数据的功能(.. 下一篇[数据库]数据库存储层级结构数据

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Java 实现多个大文件 (2025-12-24 23:22:00)
·Java多线程编程在工 (2025-12-24 23:21:56)
·请问微信4.0版本xwec (2025-12-24 22:48:42)
·电脑NVIDIA的文件夹 (2025-12-24 22:48:40)
·如何看待微信新版本 (2025-12-24 22:48:37)