SORU
28 EKİM 2010, PERŞEMBE


MySQL aynı tabloya eklemek için bir satır kopya çekebilir miyim?

insert into table select * from table where primarykey=1

Sadece kopyalamak istediğiniz bir satır eklemek için aynı tablo (örneğin, yinelenen bir satır mevcut tablo) ama istiyorum bunu yapmak zorunda kalmadan listesi tüm sütunları sonra "seç", çünkü bu tabloda çok fazla sütun.

Ama ben bunu yaptığım zaman şöyle bir hata alıyorum:

Giriş 'xxx' anahtar 1 . yinelenen

Kopyalamak istiyorum kayıt için: geçici bir kap olarak aynı sütun ile bir tablo oluşturarak bunu ben halledebilirim

create table oldtable_temp like oldtable;
insert into oldtable_temp select * from oldtable where key=1;
update oldtable_tem set key=2;
insert into oldtable select * from oldtable where key=2;

Daha basit bir şekilde bunu çözmek için var?

CEVAP
20 EYLÜL 2012, PERŞEMBE


Bir kaç değişiklik ile Leonard Challis tekniği kullandım

CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM table WHERE primarykey = 1;
UPDATE tmptable_1 SET primarykey = NULL;
INSERT INTO table SELECT * FROM tmptable_1;
DROP TEMPORARY TABLE IF EXISTS tmptable_1;

Geçici bir tablo olarak, asla birincil anahtarı hakkında endişelenmenize gerek yok bu yüzden Birden fazla kayıt olması gerekir. Null olarak ayarlamak, bir yinelenen oluşturma riski yok o yüzden değerini kendisi seçmek için MySQL sağlar.

Eğer sadece eklemek için bir satır alıyorsun süper emin olmak istiyorsan, hat TAKIN sonuna LİMİT 1 ekleyebilirsiniz.

Ben de birincil anahtar değeri (bu durumda 1) geçici tablo benim adım eklenir unutmayın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Arun Kumar

    Arun Kumar

    18 Mart 2010
  • BigDawsTv

    BigDawsTv

    20 HAZİRAN 2012
  • Migs351

    Migs351

    3 HAZİRAN 2007