我在mySql中有一个记录表.我需要维护用户指定的订单.所以我添加了一个"位置"列.
移动特定记录时,更新所有记录的SQL语句是什么?我有类似的东西:
UPDATE items SET position = '2' WHERE id ='4'; UPDATE items SET position = position+1 WHERE position >= '2' AND id != '4';
但是,如果记录下降,那么大于将会更大.有什么诀窍?谢谢!
这样的事情会这样吗?
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 );
我测试了几次它似乎工作.