如果该字段是您的主键…
……然后,正如本问题其他部分所述,您不应该更改ID. ID已经是唯一的,您既不需要也不想重复使用它们.
现在,那说……
除此以外…
对于某些应用程序定义的排序,您很可能有不同的字段(也就是PK).只要这种排序不是某些其他领域固有的(例如,如果它是用户定义的),那么这没有任何问题.
您可以使用(临时)auto_increment字段重新创建表,然后删除auto_increment.
我很想按升序更新并应用递增变量.
SET @i = 0;
UPDATE `table`
SET `myOrderCol` = @i:=@i+1
ORDER BY `myOrderCol` ASC;
(查询未经测试.)
每次删除项目时都这样做似乎很浪费,但遗憾的是,如果您想要保持列的完整性,那么使用这种手动排序方法并不是很多.
您可以减少负载,这样在删除myOrderCol等于5之后的条目之后:
SET @i = 5;
UPDATE `table`
SET `myOrderCol` = @i:=@i+1
WHERE `myOrderCol` > 5
ORDER BY `myOrderCol` ASC;
(查询未经测试.)
这将把所有以下值“混乱”为一.