Je dois mettre à jour une ligne uniquement si son paramètre status
est égal à 'CREATED'
à 'NEWSTATUS'
. J'essaye de le faire avec le code suivant, mais c'est toujours faux.
UPDATE table t SET t.otherId, t.status = CASE WHEN (SELECT t.status FROM table t WHERE t.idRow) = 'CREATED' THEN '10', 'NEWSTATUS' END WHERE t.idRow = 23
Que dois-je faire?
3 Réponses :
On dirait que vous voulez juste une simple UPDATE
avec une clause WHERE
.
UPDATE table SET status = 'NEWSTATUS' WHERE status = 'CREATED';
Cherchez-vous simplement ...:
UPDATE table SET otherId = 10, status = 'NEWSTATUS' WHERE idRow = 23 AND status = 'CREATED'
Je pense que vous voulez une expression CASE
pour l'affectation de status
:
UPDATE table t SET t.otherId, t.status = (CASE WHEN t.status = 'CREATED' THEN '10' ELSE 'NEWSTATUS' END) WHERE t.idRow = 23;