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