发新话题
打印

关于排列

关于排列

数据库:  
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都需要更新才行啊?这样服务器会不会累死啊!  

有没有好一点的办法呢?

TOP

如果只是提前的话可以用时间来代替ORDER,这样子只要更新时间就可以了。

TOP

是每个order都需要更新才行  
这样服务器还不至于会累死,服务器就是为你服务的嘛

TOP

刚刚想到一种方法。。  
更新两次就可以了。。  
往前排  
第一次就是把小于指定ORDER和大于等于提前到的ORDER值都加一  
第二次  就是更新指定记录ORDER  

往后排则反其道。

TOP

是每个order都需要更新才行  
这样服务器还不至于会累死,服务器就是为你服务的嘛  
     
   
---------如果楼主存的ID很多的,达数万,呢?还是这样子的吗?

TOP

如果你能保证你的order字段是int型或是float型的  

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

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

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

就行一万行数据也不会引响速度。

TOP

呵呵!  
“如果楼主存的ID很多的,达数万,呢?还是这样子的吗?”  
当然啦!请注意到楼主的说法:“当用户将google提前时”  

既然是“用户”的操作,那么他可以在将google提前后再将163提前。动作是不确定的、不可预知的

TOP

数字的ID可以随便改,负数都行。还可以加入小数。

TOP

发新话题