重置id auto_increment,然后比较最大id与行数量

时间:2013-04-03 13:41:16

标签: mysql pdo

我有表格自动,在表格中,列ID为auto_increment并且索引为primary key

我想要重置ID,我需要这些ID将从1排队到2,3,4,5,...

对于重置ID,我运行此查询:

ALTER TABLE autos AUTO_INCREMENT = 1

这意味着现在,maximal id必须是等效的行数吗?

但是这段代码

    $res = $db->query("SELECT COUNT(*) AS cnt FROM autos")->fetchAll(PDO::FETCH_ASSOC);
    echo "rows count: ".$res[0]['cnt']."<br>";


    $res = $db->query("SELECT MAX(id) AS id FROM autos")->fetchAll(PDO::FETCH_ASSOC);
    echo "max id".$res[0]['id'];

返回

rows count: 376733
max id: 500000

为什么max id和rows数量不匹配?哪里错了?

2 个答案:

答案 0 :(得分:1)

我永远不会像这样更新ID字段,你会破坏与其他表的任何关系(如果你有它们)并导致很多混乱。 您应该创建一个新字段SortOrder或不是主键的东西,然后将此字段更新为新的行号。

答案 1 :(得分:-2)

COUNT函数将返回表中的行数,而MAX函数返回列中表中的MAX值。

例如,如果表中只有一条ID值为5000的记录,则count将返回1,而MAX(ID)将返回5000.

插入记录时,如果不为自动增量列提供值或提供NULL值,则MySQL会将AUTO-INCREMENT计数分配给此自动增量列并增加指针。