当前位置:  开发笔记 > 后端 > 正文

维护/更新mysql中的记录顺序

如何解决《维护/更新mysql中的记录顺序》经验,为你挑选了1个好方法。

我在mySql中有一个记录表.我需要维护用户指定的订单.所以我添加了一个"位置"列.

移动特定记录时,更新所有记录的SQL语句是什么?我有类似的东西:

UPDATE items SET position = '2' WHERE id ='4';
UPDATE items SET position = position+1 WHERE position >= '2' AND id != '4';

但是,如果记录下降,那么大于将会更大.有什么诀窍?谢谢!



1> Bill Karwin..:

这样的事情会这样吗?

UPDATE items 
SET position = CASE position 
  WHEN $oldpos THEN $newpos 
  ELSE position + SIGN($oldpos-$newpos)
 END
WHERE position BETWEEN LEAST( $newpos, $oldpos ) 
                AND GREATEST( $newpos, $oldpos );

我测试了几次它似乎工作.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有