Ich habe eine große Anzahl von Zeilen, die ich kopieren möchte, aber ich muss ein Feld ändern.
Ich kann die Zeilen auswählen, die ich kopieren möchte:
select * from Table where Event_ID = "120"
Jetzt möchte ich alle diese Zeilen kopieren und neue Zeilen zu erstellen , während der Einstellung Event_ID
zu 155
. Wie kann ich das erreichen?
Dies ist eine Lösung, bei der Sie viele Felder in Ihrer Tabelle haben und keine Fingerkrämpfe durch die Eingabe aller Felder bekommen möchten. Geben Sie einfach die benötigten Felder ein :)
So kopieren Sie einige Zeilen in dieselbe Tabelle, wobei einige Felder unterschiedliche Werte haben:
Dein Code:
Allgemeiner Szenariocode:
Vereinfachter / komprimierter Code:
Da die Erstellung der temporären Tabelle das
TEMPORARY
Schlüsselwort verwendet, wird sie nach Beendigung der Sitzung automatisch gelöscht (wie von @ ar34z vorgeschlagen).quelle
TEMPORARY
Schlüsselwort zum Erstellen temporärer Tabellen. Die Verwendung vonCREATE TEMPORARY TABLE
wird die Tabelle automatisch löschen, wenn die Sitzung (eine Reihe von SQL-Abfragen) beendet ist. Das Löschen der Tabelle wäre nicht erforderlich und steht nicht in Konflikt mit anderen temporären Tabellen mit demselben Namen. (zB beim Live-Hacking (was ich nicht empfehlen würde))ALTER TABLE temporary_table MODIFY <auto_inc_not_null_field> INT;
Dann würde das Update des Primärschlüssels auf Null nicht fehlschlagen.Exception: null value in column <auto_inc_not_null_field> violates not-null constraint
. Ich habe versuchtALTER TABLE temporary_table ALTER COLUMN <auto_inc_not_null_field> DROP NOT NULL;
Angenommen, Ihre Tabelle enthält zwei weitere Spalten: foo und bar
quelle
Wenn Ihre Tabelle viele Spalten enthält und Sie nicht jede Spalte eingeben möchten, können Sie dies mithilfe einer temporären Tabelle tun, z.
quelle
Hey, wie wäre es, alle Felder zu kopieren, eines davon auf den gleichen Wert + etwas anderes zu ändern.
??????????
quelle
Solange Event_ID Integer ist, gehen Sie folgendermaßen vor:
quelle