在现有MySQL数据库上填充自动增量类型ID?

时间:2014-03-16 00:58:06

标签: php mysql sql

我有一个可以通过PHP访问的现有MySQL数据库。大约有15,000条记录,我需要快速进入并更新刚刚添加的新Design Number列。我需要迭代整个数据集并将第一条记录的值设置为00001,即下一个00002,并保持递增1直到我结束。我有代码来确保所有新记录都已应用,但我需要快速更新现有的15,000条记录。

有没有快速的方法在MySQL中执行此操作而不构建PHP脚本来快速填充所有旧记录?

请记住,这不是MySQL中的常规自动增量,而是在SugarCRM中模仿该功能的自定义实现

我需要迭代这个表......

SELECT designnumber_c FROM d1_designs_cstm

然后更新此designnumber_c列,并为每条记录增加+1,同时保持00001 0填充

2 个答案:

答案 0 :(得分:3)

这样的事情:

mysql> SET @id := 0;
mysql> UPDATE d1_designs_cstm SET designnumber_c = LPAD(@id:=@id+1, 6, '0');

答案 1 :(得分:2)

通过Answer

@Patrick Savalle上添加更多内容

您可以将新列定义为

designnumber_c int(6) unsigned zerofill not null

用这个:

  1. 您无需明确填充零。
  2. 您可以按实际值选择,更新,删除列 零填充值。
  3. 示例

    mysql> SET @id := 0;
    mysql> UPDATE d1_designs_cstm 
        ->   SET designnumber_c = @id:=@id+1;