Katakanlah tabel Anda memiliki bidang berikut:
( pk_id int not null auto_increment primary key,
col1 int,
col2 varchar(10)
)
kemudian, untuk menyalin nilai dari satu baris ke baris lain dengan nilai kunci baru, kueri berikut dapat membantu
insert into my_table( col1, col2 ) select col1, col2 from my_table where pk_id=?;
Ini akan menghasilkan nilai baru untuk pk_id
bidang dan salin nilai dari col1
, dan col2
dari baris yang dipilih.
Anda dapat memperluas sampel ini untuk mengajukan lebih banyak bidang di tabel.
PERBARUI :
Sehubungan dengan komentar dari JohnP dan Martin -
Kita dapat menggunakan tabel sementara untuk buffer pertama dari tabel utama dan menggunakannya untuk menyalin ke tabel utama lagi. Hanya memperbarui bidang referensi pk di tabel temp tidak akan membantu karena mungkin sudah ada di tabel utama. Sebagai gantinya, kita dapat menghapus bidang pk dari tabel temp dan menyalin yang lainnya ke tabel utama.
Dengan mengacu pada jawaban oleh Tim Ruehsen di postingan yang dirujuk :
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;
Semoga membantu.