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_nameWHERE condition_if_necessary
@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
Antworten:
Wie wäre es damit
Dadurch wird jede Zeile aktualisiert.
quelle
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.quelle
UPDATE user SET last_seen = first_seen WHERE last_seen IS NULL