假设您的表格包含以下字段:
( pk_id int not null auto_increment primary key, col1 int, col2 varchar(10))
然后,要将具有新键值的值从一行复制到另一行,以下查询可能会有所帮助
insert into my_table( col1, col2 ) select col1, col2 from my_table where pk_id=?;
这将产生一个新的价值
pk_id领域和值复制
col1,并
col2选定行的。
您可以扩展此示例以在表中申请更多字段。
更新 :
在适当尊重JohnP和Martin的意见 -
我们可以使用临时表首先从主表缓冲,然后使用它再次复制到主表。仅更新临时表中的pk参考字段将无济于事,因为它可能已存在于主表中。相反,我们可以从临时表中删除pk字段,并将所有其他字段复制到主表中。
参考Tim
Ruehsen在相关帖子中的回答:
CREATE TEMPORARY TABLE tmp SELECt * from my_table WHERe ...;ALTER TABLE tmp drop pk_id; # drop autoincrement field# UPDATE tmp SET ...; # just needed to change other unique keysINSERT INTO my_table SELECT 0,tmp.* FROM tmp;DROP TEMPORARY TABLE tmp;
希望这可以帮助。



