我有问题从1,2,3,4,5开始再次更新ID号列表。因为我在测试sql命令时删除了少量记录。能否请你从1开始重新制作这个id列。
我可以只输入身份证号码的名称,但是如果我这样做,那么当我输入新记录时,它将再次从之前的66号码开始。
ID Name
1 A
32 B
34 C
35 D
55 E
66 F
答案 0 :(得分:0)
首先截断你的表,然后执行这个
ALTER TABLE tablename AUTO_INCREMENT = 1
答案 1 :(得分:0)
您应该截断表格以正确重新设置它,而不仅仅是使用alter table
答案 2 :(得分:0)
(tldr;通常最好不要担心自动增量列的密度或连续顺序。)
1 1 使用AUTO_INCREMENT自动填写小于MAX(ID)的值。
但是,如果现有ID已更新,则可以重置自动增量ID。压缩阶段是必需的,因为MySQL does not allow "filling in gaps" via an auto-increment column。
SET @i := 0;
UPDATE t id = @i := (@i+1)
重要事项:确保在完成之前以CASCADE ON UPDATE 的外键关系形式识别所有关系用法,否则数据可能会不可逆转地损坏。
压缩后,将自动ID分配给最大 1 ID值:
ALTER TABLE t AUTO_INCREMENT = (SELECT MAX(id) FROM t)
1 根据ALTER TABLE中的AUTO_INCREMENT文档:
您无法将计数器重置为小于或等于当前正在使用的值的值。如果该值小于或等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前值最大AUTO_INCREMENT列值加一。
该规则意味着无法将增量ID lower 设置为已使用的ID;此外,手动分配更高的值将自动提高 AUTO_INCREMENT值。
答案 3 :(得分:0)
最简单(也是最快)的方法是删除列并将其添加回来。更新列可能会搞砸索引或弄乱值。放下整张桌子毫无意义。但请记住,如果其他列引用了这些ID,则可能会损坏您的应用。