我在一个表中有1000条记录,它保存从1到1000的位置字段。现在我想实现1000条记录的重新排序功能。假设,如果我将第1000个记录移动到第1个位置,则第1个记录应移动到第2个位置,第2个记录移动到第3个位置,第9个记录移动到第1000个位置。
注意:我每页显示20条记录。
我使用jqGrid拖放插件实现了重新排序功能。使用这种技术,一次更新20个记录位置非常简单。在MySQL方面,我将触发20个更新查询以更新20个记录位置。
现在,我希望在position列中有一个文本框字段,用于保存当前记录位置。这样,用户可以通过在文本字段中输入位置编号将任何记录移动到任何位置,而不管拖放。假设,我在第50页并且我想将第1000个记录移动到第1个位置,我将在第1000个位置文本字段中输入位置编号为1.一旦我输入位置编号,重新排序逻辑应该按照我说的进行在第一段。
现在,有人请告诉我如何一次更新1000条记录?什么是MySQL负载?实现此功能的最佳方法是什么?
注意:我不想像我在拖放功能中那样触发1000次更新查询(即避免MySQL死锁情况)。
感谢任何人提前帮助。
答案 0 :(得分:3)
数以百计的更新有点荒谬。 尝试这样的事情:
UPDATE Records SET
SequenceNumber = SequenceNumber + 1
WHERE SequenceNumber >= @Lowbound AND SequenceNumber <= @UpperBound;
UPDATE Records SET
SequenceNumber = @Lowbound
WHERE ID = @SelectedId;