在不枚举字段的情况下复制mysql表中的行

时间:2010-11-14 01:27:07

标签: mysql auto-increment temp-tables

这个mysql表有一个自动增量字段。我想复制一些行。我以为我会用一张临时表:

CREATE TEMPORARY TABLE tmptab SELECT * FROM mytab WHERE somecondition = 1;

在将数据复制回mytab之前,我现在可以在tmptab中进行一些更新。

UPDATE tmptab ... /* some updates */;

因为mytab有一个自动增量字段,所以我不能简单地将tmptab的内容复制到mytab。一种解决方案是使用字段(并省略自动增量字段)。

我正在寻找一个没有枚举字段的解决方案。这具有优势,例如,稍后将添加字段。

我认为我可以删除tmptab中的自动增量字段(删除自动增量列),然后使用类似于此的查询:

INSERT INTO mytab SELECT *  FROM tmptab;

这会有用吗? mytab中的自动增量字段应正确设置。或者有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

  

我想我可以删除tmptab中的autoindex字段(删除autoindex列),然后使用类似于此的查询

你需要使用这样的命令:

UPDATE tmptab SET key_column=NULL

当您将NULL插回原始表时,它将生成新的auto_increment ids。

您可能需要添加一个命令来删除临时表上的主键索引,以使其正常工作。