Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Kann ich in MySQL eine Zeile kopieren, um sie in dieselbe Tabelle einzufügen?

Ich habe die Technik von Leonard Challis mit einigen Änderungen verwendet:

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;

Als temporäre Tabelle sollte es nie mehr als einen Datensatz geben, sodass Sie sich keine Gedanken über den Primärschlüssel machen müssen. Wenn Sie es auf null setzen, kann MySQL den Wert selbst auswählen, sodass kein Risiko besteht, ein Duplikat zu erstellen.

Wenn Sie ganz sicher gehen möchten, dass Sie nur eine Zeile zum Einfügen erhalten, können Sie LIMIT 1 am Ende der INSERT INTO-Zeile hinzufügen.

Beachten Sie, dass ich auch den Primärschlüsselwert (in diesem Fall 1) an meinen temporären Tabellennamen angehängt habe.