J'ai une table avec deux colonnes DATETIME.
L'un d'eux n'est jamais NULL, mais l'un d'entre eux est parfois NULL.
J'ai besoin d'écrire une requête qui définira toutes les lignes NULL pour la colonne B égales aux valeurs de la colonne A.
J'ai essayé cet exemple mais le SQL dans la réponse sélectionnée ne s'exécute pas car MySQL Workbench ne semble pas aimer le FROM dans UPDATE.
On dirait que vous travaillez dans une seule table, alors quelque chose comme ceci:
update your_table
set B = A
where B is null
UPDATE YourTable
SET ColumnB=ColumnA
WHERE
ColumnB IS NULL
AND ColumnA IS NOT NULL
Je le ferais de cette façon:
UPDATE YourTable SET B = COALESCE(B, A);
COALESCE est une fonction qui retourne son premier argument non nul.
Dans cet exemple, si B sur une ligne donnée n'est pas null, la mise à jour est une opération sans opération.
Si B est null, la COALESCE l'ignore et utilise A à la place.
Je ne pense pas que cet autre exemple correspond à 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
Voici un exemple de code qui pourrait vous aider à gérer les colonnes A à B:
UPDATE YourTable
SET ColumnB = ColumnA
WHERE
ColumnB IS NULL
AND ColumnA IS NOT NULL;