Lad os sige, at din tabel har følgende felter:
( pk_id int not null auto_increment primary key,
col1 int,
col2 varchar(10)
)
derefter, for at kopiere værdier fra en række til den anden række med ny nøgleværdi, kan følgende forespørgsel måske hjælpe
insert into my_table( col1, col2 ) select col1, col2 from my_table where pk_id=?;
Dette vil generere en ny værdi for pk_id
felt og kopier værdier fra col1
og col2
af den valgte række.
Du kan udvide denne prøve til at ansøge om flere felter i tabellen.
OPDATERING :
Med respekt for kommentarerne fra JohnP og Martin -
Vi kan bruge midlertidig tabel til først at buffere fra hovedtabellen og bruge den til at kopiere til hovedtabellen igen. Blot opdatering af pk-referencefeltet i temp-tabellen vil ikke hjælpe, da det måske allerede er til stede i hovedtabellen. I stedet kan vi slippe pk-feltet fra temp-tabellen og kopiere alt andet til hovedtabellen.
Med henvisning til svaret af Tim Ruehsen i det henviste opslag :
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;
Håber dette hjælper.