118 votes

SQL définit les valeurs d'une colonne comme étant égales aux valeurs d'une autre colonne dans la même table.

J'ai une table avec deux colonnes DATETIME.

L'un d'entre eux n'est jamais NULL, mais l'un d'entre eux est parfois NULL.

J'ai besoin d'écrire une requête qui mettra toutes les lignes NULL de la colonne B à égalité avec les valeurs de la colonne A.

J'ai essayé cet exemple mais le code SQL dans la réponse sélectionnée ne s'exécute pas parce que MySQL Workbench ne semble pas aimer le FROM dans le UPDATE.

190voto

mu is too short Points 205090

On dirait que vous travaillez dans une seule table, donc quelque chose comme ça :

update your_table
set B = A
where B is null

27voto

Bill Karwin Points 204877

Je procéderais de la manière suivante :

UPDATE YourTable SET B = COALESCE(B, A);

COALESCE est une fonction qui renvoie son premier argument non nul.

Dans cet exemple, si B sur une ligne donnée n'est pas null, la mise à jour n'est pas possible.

Si B est nul, la COALESCE l'ignore et utilise A à la place.

25voto

Icarus Points 36951
UPDATE YourTable
SET ColumnB=ColumnA
WHERE
ColumnB IS NULL 
AND ColumnA IS NOT NULL

6voto

rwilliams Points 11715

Je ne pense pas que cet autre exemple corresponde à ce que vous recherchez. Si vous ne faites que mettre à jour une colonne à partir d'une autre colonne de la même table, vous devriez pouvoir utiliser quelque chose comme ceci.

update some_table set null_column = not_null_column where null_column is null

6voto

Waruna Manjula Points 868

Voici un exemple de code qui pourrait vous aider à copier la colonne A vers la colonne B :

UPDATE YourTable
SET ColumnB = ColumnA
WHERE
ColumnB IS NULL
AND ColumnA IS NOT NULL;

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