字体:  

关于排列

Kitte 发表于: 2006-6-05 14:22 来源: 立华软件园博客

数据库:  
id  name      order  
1    163        1  
2    sina      2  
3    sohu      3  
4    google  4  

id是自动增加的,name为用户输入的,order是排列顺序  

当用户将google提前时:  
id  name      order  
4    google  1  
1    163        2  
2    sina      3  
3    sohu      4  

id和name不能变,是不是每个order都需要更新才行啊?这样服务器会不会累死啊!  

有没有好一点的办法呢?

最新回复

流浪天崖 at 2006-6-05 14:22:47
如果只是提前的话可以用时间来代替ORDER,这样子只要更新时间就可以了。
月光飘影 at 2006-6-05 14:23:23
是每个order都需要更新才行  
这样服务器还不至于会累死,服务器就是为你服务的嘛
BonJovi at 2006-6-05 14:23:58
刚刚想到一种方法。。  
更新两次就可以了。。  
往前排  
第一次就是把小于指定ORDER和大于等于提前到的ORDER值都加一  
第二次  就是更新指定记录ORDER  

往后排则反其道。
丢丢 at 2006-6-05 14:25:02
是每个order都需要更新才行  
这样服务器还不至于会累死,服务器就是为你服务的嘛  
     
   
---------如果楼主存的ID很多的,达数万,呢?还是这样子的吗?
eujf at 2006-6-05 14:26:37
如果你能保证你的order字段是int型或是float型的  

那么,真是太简单了。  :-)  

如果是int型。真接将  4  改成  -1  或其它比1小的数就行呀。  

如果是float型那真是太方便啦。如果想将4改成移到3前面2后面,那么将4改在2.000001都行呀。  

就行一万行数据也不会引响速度。
Teresa at 2006-6-05 14:30:43
呵呵!  
“如果楼主存的ID很多的,达数万,呢?还是这样子的吗?”  
当然啦!请注意到楼主的说法:“当用户将google提前时”  

既然是“用户”的操作,那么他可以在将google提前后再将163提前。动作是不确定的、不可预知的
风雨声中 at 2006-8-01 11:27:51
数字的ID可以随便改,负数都行。还可以加入小数。