337 votes

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

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

597voto

Ash Burlaczenko Points 7918

Que pensez-vous de ça ?

UPDATE table SET columnB = columnA;

Cela mettra à jour chaque ligne.

2 votes

Cela fonctionnera également si vous souhaitez transférer une ancienne valeur vers une autre colonne et mettre à jour la première : UPDATE table SET columnA = 'new value', columnB = columnA . Comme le dit l'autre réponse, n'oubliez pas la clause WHERE pour ne mettre à jour que ce qui est nécessaire.

8 votes

Je pense à un processus complexe avec une boucle pour chaque enregistrement alors que la réponse est si simple.

4 votes

Cela montre la puissance d'un langage déclaratif ! La plupart d'entre nous sont tellement familiers avec les langages de programmation impératifs que nous en oublions la simplicité.

126voto

honey4092 Points 243
UPDATE table_name SET
    destination_column_name=orig_column_name
WHERE condition_if_necessary

13 votes

@Mark, cela a du sens, pourquoi est-ce que cela a été rejeté ? J'ai une situation où je dois copier une valeur de date d'une colonne à d'autres colonnes, et cela ne s'applique qu'à CERTAINES des colonnes, et pas à toutes. Il est donc nécessaire d'avoir un WHERE dans la déclaration.

5 votes

@finnTheHuman La question demande comment " copier les données de tous les enregistrements ", ce à quoi la réponse précédente répond correctement, donc cela n'ajoute rien.

9 votes

@Mark "En quoi cela diffère-t-il de l'ancienne réponse acceptée", elle comporte une clause WHERE. "C'est un bon point d'inclure la clause WHERE SI NÉCESSAIRE. Nous devrions être responsables du déclassement des réponses.

2voto

Vayuj Rajan Points 51

Cela mettra à jour toutes les lignes de cette colonne 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 une clé primaire supérieure à 0, ce qui permet de tout mettre à jour.

UPDATE table SET columnB = columnA where table.column>0;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X