0

如何在更新期间重新排序表中的字段。

即我有这张桌子:

|id|order|
|1 | 0   |
|2 | 0   |
|3 | 1   |
|4 | 2   |
|5 | 3   |
|6 | 0   |
|7 | 4   |

现在我想做的是,如果 id = 3 被删除,整个订单字段将更新为:

|id|order|
|1 | 0   |
|2 | 0   |
|4 | 1   |
|5 | 2   |
|6 | 0   |
|7 | 3   |

有一个简单的解决方案吗?如果有,我会怎么做?我正在考虑单独检查这些字段。

即如果 3 被删除,我将首先获取它的订单号并检查是否没有其他 id 持有相同的订单,如果没有,我将继续检查所有大于 id 3 的订单号的订单并单独更新它们.

4

1 回答 1

1

如果 id 是自动数字或新 id 将始终采用 max(id)+1 值,则:

通过更新您刚刚删除的行之后的所有行:

update your_table set order = order - 1 where id> @the_id_you_just_deleted
于 2013-10-11T21:09:31.540 回答