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

253

Est-il possible de copier des données de la colonne A vers la colonne B pour tous les enregistrements d'une table en SQL?

jonney
la source
@DanielDiPaolo cette question est pour copier une colonne vers une autre table
Nick T

Réponses:

466

Que dis-tu de ça

UPDATE table SET columnB = columnA;

Cela mettra à jour chaque ligne.

Ash Burlaczenko
la source
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
dev4092
la source
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;

Vayuj Rajan
la source