更新“订单”列MySQL?

时间:2010-01-21 21:19:52

标签: sql mysql

更新“订单”列的最佳方法是什么?

假设我有一个0到9的id列,并且从0到9的顺序列。

目前,它在数据库中: 0 0,1 1,2 2等

我的HTML页面发布它想要的新订单:0 8,1 3,2 6等(这完全是随机的,由用户决定)。

进行更新的最佳方式是什么?

我可以遍历并运行每个更新。 我还可以创建一个包含所有对的临时表,然后根据子查询进行更新。

但是我觉得我忘记了一些可以更快地做到这一点的微不足道的事情。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

你必须自己更新每一行,没有办法在sql中进行“map”更新。

(有一些技巧,但无论如何它们都没有真正适用/帮助。)

答案 1 :(得分:0)

如果用户确实在随机重新排序这些项目,那么您无能为力。但通常用户可能会对现有订单进行少量修改,例如在列表中向上移动一个项目。在这种情况下,您可以通过放宽排序顺序列必须包含顺序整数的约束来提高速度。我在here之前讨论了一个可能的想法,如果你对如何实现它的细节感兴趣,你可以阅读这个建议。

但是对于10号的名单,可能不值得付出额外的努力。做你正在做的事情 - 它在实践中可能会很好。