Comment puis-je copier des données d'une colonne à une autre dans la même table?


Réponses:


466

Que dis-tu de ça

UPDATE table SET columnB = columnA;

Cela mettra à jour chaque ligne.


1
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_name
WHERE condition_if_necessary

10
@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;

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.