mysql数据库id重新排序

方法1 删除表格并重新创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- 备份表格
CREATE TABLE old_table_bak SELECT * FROM old_table;
-- 删除原表格
DROP TABLE old_table;
-- 创建新表格
CREATE TABLE new_table (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
column1 VARCHAR(50),
column2 INT(11)
);
-- 将备份数据插入新表格
INSERT INTO new_table(column1, column2) SELECT column1, column2 FROM old_table_bak;
-- 使用新表格
RENAME TABLE new_table TO old_table;

方法2 使用ALTER命令

如果表格中数据的数量较大,那么删除并重建表格就显得不太实际了。这时我们可以使用ALTER命令,通过修改表格中ID的值来实现重新排序。需要注意的是,ALTER命令可能会导致表格锁定,所以需要对表格使用LOCK TABLES命令来防止其它并发操作。

1
2
3
4
5
6
7
-- 锁定表格
LOCK TABLES old_table WRITE;
-- 将ID设置为@rownum
SET @rownum:=0;
UPDATE old_table SET id=@rownum:=@rownum+1;
-- 解除锁定
UNLOCK TABLES;