mysql行命令重新计算

时间:2013-02-01 06:25:41

标签: mysql

假设我们有表:

announces_id    announces_pos   announces_title

如何通过单个查询重新计算所有announces_pos? 例: 将announces_pos设置为id 2上的3,所有下一行(announces_pos> 3)应重新计算

1 个答案:

答案 0 :(得分:1)

你需要处于旧位置。比增加旧的和新的之间的所有位置。

DO @old_pos:=announces_pos FROM announces WHERE announces_id = 2;
UPDATE announces SET announces_pos = IF(announces_id = 2, 3, announces_pos + 1) WHERE announces_pos BETWEEN 3 AND @old_pos;