Digamos que sua tabela tenha os seguintes campos:
( pk_id int not null auto_increment primary key,
col1 int,
col2 varchar(10)
)
então, para copiar valores de uma linha para a outra linha com o novo valor de chave, a consulta a seguir pode ajudar
insert into my_table( col1, col2 ) select col1, col2 from my_table where pk_id=?;
Isso gerará um novo valor para
pk_id
campo e copie valores de col1
e col2
da linha selecionada. Você pode estender este exemplo para aplicar para mais campos na tabela.
ATUALIZAÇÃO :
Em respeito aos comentários de JohnP e Martin -
Podemos usar a tabela temporária para fazer o buffer primeiro da tabela principal e usá-la para copiar para a tabela principal novamente. A mera atualização do campo de referência pk na tabela temporária não ajudará, pois pode já estar presente na tabela principal. Em vez disso, podemos remover o campo pk da tabela temporária e copiar todos os outros para a tabela principal.
Com referência à resposta de Tim Ruehsen na postagem de referência :
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 keys
INSERT INTO my_table SELECT 0,tmp.* FROM tmp;
DROP TEMPORARY TABLE tmp;
Espero que isto ajude.