我在 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 );
我测试了几次,似乎有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)