首页 新闻 会员 周边 捐助

sqlserver小问题

0
悬赏园豆:10 [已关闭问题] 关闭于 2010-12-01 16:54

比如有一个表:

 id  name  orderid

 1    a       5

 2    b       10

 3    c        11

 4     d        15

 5     e        16

这样的表,点击按钮后那个orderid 变成 :5,10,15,20,25

就是每把原来的11变成了15,原来的15变成20,原来的16变成25,就是第一个数为5,以后的都要依次增加5

wlz0815的主页 wlz0815 | 小虾三级 | 园豆:587
提问于:2010-11-30 13:00
< >
分享
所有回答(3)
0

使用SQL的CASE函数。

Astar | 园豆:40805 (高人七级) | 2010-11-30 13:09
在没有告诉你下一个数的前提下,是搞不了的。
支持(0) 反对(0) wlz0815 | 园豆:587 (小虾三级) | 2010-11-30 16:38
0

DECLARE @ID int,@Orderid int;
DECLARE testCur CURSOR FOR SELECT id FROM Test
OPEN testCur
FETCH NEXT FROM testCur INTO @ID
WHILE(@@FETCH_status=0)
BEGIN
SELECT @Orderid=orderid FROM Test WHERE id=@ID;
FETCH NEXT FROM testCur INTO @ID
UPDATE Test SET orderid=@Orderid+5 WHERE id=@ID;
END
UPDATE Test SET orderid=orderid-5 WHERE id=@ID;
CLOSE testCur
DEALLOCATE testCur

artwl | 园豆:16736 (专家六级) | 2010-11-30 13:38
假如中间缺的,就不对了,比如id=5,它排第三行,就不对了,一直顺着就对。
支持(0) 反对(0) wlz0815 | 园豆:587 (小虾三级) | 2010-11-30 16:49
你等一下我给你写个通用的
支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2010-11-30 16:50
DECLARE @ID int,@Orderid int; DECLARE testCur CURSOR FOR SELECT id FROM Test OPEN testCur FETCH NEXT FROM testCur INTO @ID WHILE(@@FETCH_status=0) BEGIN SELECT @Orderid=orderid FROM Test WHERE id=@ID; FETCH NEXT FROM testCur INTO @ID UPDATE Test SET orderid=@Orderid+5 WHERE id=@ID; END UPDATE Test SET orderid=orderid-5 WHERE id=@ID; CLOSE testCur DEALLOCATE testCur 限制:id不能有重复的,你试试,不行的话再交流
支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2010-11-30 17:05
不对呀,我的数本来是:1,2,5,6,12 执行你的代码后成了:1,2,7,12,17
支持(0) 反对(0) wlz0815 | 园豆:587 (小虾三级) | 2010-11-30 21:52
你确定你的表结构是这样的吗,我测试过的,可以的啊
支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2010-12-01 09:06
我的表不是这样的,不过我要的效果是一样的,所以表不是关键呀,只要换一下表名跟字段就可以了,你不要用连续的呀,要中间断码的比如ID值为:1,8,12,不要:1,2,3这样顺着来。
支持(0) 反对(0) wlz0815 | 园豆:587 (小虾三级) | 2010-12-01 09:52
如果ID没有重复的肯定可以(不连续也可以),如果有重复的就会出错,你的ID有没有重复的?
支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2010-12-01 10:06
0

随机数!!!

°潶、緤° | 园豆:17 (初学一级) | 2010-12-01 15:27
试试看。
支持(0) 反对(0) wlz0815 | 园豆:587 (小虾三级) | 2010-12-01 19:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册