Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Salin baris tetapi dengan id baru

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menginstal Server Web di FreeBSD 6.0 dengan Apache 2.2, MySQL 5.0 dan PHP 5 – Bagian 3

  2. Tangani restart mysql di SQLAlchemy

  3. Bagaimana mengubah ukuran max_allowed_packet

  4. PHP MySQL - Untuk setiap 6 baris, masukkan div?

  5. Bagaimana Menghindari Perbaikan Dengan Keycache?