Cela fonctionne aussi si vous voulez transférer ancienne valeur à autre colonne et mettre à jour la première: UPDATE table SET columnA = 'new value', columnB = columnA. Comme le dit une autre réponse - n'oubliez pas la clause WHERE pour mettre à jour uniquement ce qui est nécessaire.
Carl di Ortus
5
Je pense dans un processus complexe à faire une boucle à chaque enregistrement lorsque la réponse est si simple
deFreitas
6
@deFreitas Un homme sage m'a dit: si vous songez à écrire une boucle pour accomplir quelque chose en SQL, vous le faites mal.
Daniel Patrick
95
UPDATE table_name SET
destination_column_name=orig_column_nameWHERE condition_if_necessary
@Mark, cela a du sens, pourquoi est-ce un vote négatif? J'ai eu une situation où j'ai besoin de copier une valeur de date d'une colonne vers d'autres colonnes, et cela ne s'applique qu'à CERTAINES des colonnes, et pas à toutes. Il serait donc nécessaire d'avoir un OERE dans la déclaration.
finnTheHumin
5
@finnTheHuman La question demande comment "copier les données de tous les enregistrements" auxquelles la réponse précédente répond correctement afin que cela n'ajoute rien
mmmmmm
7
@Mark "En quoi cela diffère-t-il de l'ancienne réponse acceptée", il contient une clause WHERE. "donc cela n'ajoute rien", je ne suis pas d'accord, cela ajoute quelque chose. c'est un bon point pour inclure la clause WHERE SI NÉCESSAIRE. nous devrions être responsables des réponses à la baisse. haters gon 'hate
finnTheHumin
Dans mon cas, j'ai ajouté une colonne last_seen. UPDATE user SET last_seen = first_seen WHERE last_seen IS NULL
luckydonald
Je suis en désaccord avec l'un de vous. Mais pas disposé à dire qui !. Où la clause fonctionne comme un régal
Andrew Day
0
Cela mettra à jour toutes les lignes de ces colonnes si le mode sans échec n'est pas activé.
UPDATE table SET columnB = columnA;
Si le mode sans échec est activé, vous devrez utiliser une clause where. J'utilise la clé primaire comme supérieure à 0, fondamentalement tout sera mis à jour
UPDATE table SET columnB = columnA where table.column>0;
Réponses:
Que dis-tu de ça
Cela mettra à jour chaque ligne.
la source
UPDATE table SET columnA = 'new value', columnB = columnA
. Comme le dit une autre réponse - n'oubliez pas la clause WHERE pour mettre à jour uniquement ce qui est nécessaire.la source
UPDATE user SET last_seen = first_seen WHERE last_seen IS NULL
Cela mettra à jour toutes les lignes de ces colonnes si le mode sans échec n'est pas activé.
UPDATE table SET columnB = columnA;
Si le mode sans échec est activé, vous devrez utiliser une clause where. J'utilise la clé primaire comme supérieure à 0, fondamentalement tout sera mis à jour
UPDATE table SET columnB = columnA where table.column>0;
la source