Mysql从1到N重新生成缺失的ID

时间:2011-03-27 13:50:57

标签: mysql

我有一个带有索引列id2的表。使用此表插入/删除记录后,有一些丢失的记录。 id2就像这样开始

  

1,2,3,4,8,9,13,55,66,67,68 .... 928746

如何重新生成id2的序列,以便它没有丢失的数字[1,2,3,4,5,6 ....]?此外,id2顺序必须与ts字段一致,这是记录插入的unix时间戳。

是否可以使用mysql查询,没有任何代码(PHP)?

P.S没有什么依赖于这些IDS我可以自由地改变它们,我只想这样做。任何提示?

1 个答案:

答案 0 :(得分:0)

SET @rownum=0;
UPDATE [table] t, (SELECT @rownum:=@rownum+1 rownum, [table].* FROM [table]) r
SET t.[field] = r.rownum
WHERE (t.[primary_key] = r.[primary_key]) 

将[table]替换为您的表名,[field]替换为您的字段名称,[primary_key]替换为主键列名称

来自:http://forums.mysql.com/read.php?61,402,108189