Wie kann ich Daten von einer Spalte in eine andere in derselben Tabelle kopieren?


Antworten:


464

Wie wäre es damit

UPDATE table SET columnB = columnA;

Dadurch wird jede Zeile aktualisiert.


1
Dies funktioniert auch, wenn Sie den alten Wert in eine andere Spalte übertragen und die erste aktualisieren möchten : UPDATE table SET columnA = 'new value', columnB = columnA. Wie andere Antworten sagen - vergessen Sie nicht die WHERE-Klausel, um nur das zu aktualisieren, was benötigt wird.
Carl di Ortus

5
Ich denke in einem komplexen Prozess, der bei jedem Datensatz eine Schleife macht, wenn die Antwort so einfach ist
deFreitas

6
@deFreitas Ein weiser Mann sagte mir: Wenn Sie darüber nachdenken, eine Schleife zu schreiben, um etwas in SQL zu erreichen, machen Sie es falsch.
Daniel Patrick

95
UPDATE table_name SET
    destination_column_name=orig_column_name
WHERE condition_if_necessary

10
@Mark, das macht eigentlich Sinn, warum wird das herabgestimmt? Ich hatte eine Situation, in der ich einen Datumswert von einer Spalte in andere Spalten kopieren musste, und dies gilt nur für EINIGE der Spalten und nicht für alle. Ein WHERE in der Aussage wäre also notwendig.
FinnTheHumin

5
@finnTheHuman Die Frage fragt, wie "Daten aus allen Datensätzen kopieren", die die frühere Antwort richtig beantwortet, so dass nichts hinzugefügt wird
user151019

7
@Mark "Wie unterscheidet sich das von der alten akzeptierten Antwort?", Es hat eine WHERE-Klausel. "Das fügt also nichts hinzu", stimme ich nicht zu, es fügt etwas hinzu. Es ist ein guter Punkt, die WHERE-Klausel aufzunehmen, wenn dies erforderlich ist. Wir sollten dafür verantwortlich sein, Antworten abzustimmen. Hasser werden hassen
finnTheHumin

In meinem Fall habe ich eine last_seen-Spalte hinzugefügt. UPDATE user SET last_seen = first_seen WHERE last_seen IS NULL
Luckydonald

Ich bin mit einem von euch nicht einverstanden. Aber nicht bereit zu sagen, wer!. Wo Klausel funktioniert wie ein Vergnügen du
Andrew Day
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.