Mysql
 sql >> Database >  >> RDS >> Mysql

In MySQL, posso copiare una riga da inserire nella stessa tabella?

Ho usato la tecnica di Leonard Challis con alcune modifiche:

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;

Come tabella temporanea, non dovrebbe mai esserci più di un record, quindi non devi preoccuparti della chiave primaria. Impostarlo su null consente a MySQL di scegliere il valore stesso, quindi non c'è il rischio di creare un duplicato.

Se vuoi essere estremamente sicuro di ottenere solo una riga da inserire, puoi aggiungere LIMIT 1 alla fine della riga INSERT INTO.

Nota che ho anche aggiunto il valore della chiave primaria (1 in questo caso) al nome della mia tabella temporanea.