Maison  >  Article  >  base de données  >  Comment mettre à jour une entrée MySQL à l'aide de CASE pour l'attribution dynamique de valeurs ?

Comment mettre à jour une entrée MySQL à l'aide de CASE pour l'attribution dynamique de valeurs ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-11 03:34:03750parcourir

How to Update a MySQL Entry Using CASE for Dynamic Value Assignment?

Comment mettre à jour efficacement une entrée dans MySQL en utilisant CASE pour une nouvelle valeur

Pour mettre à jour une entrée dans MySQL à l'aide de l'instruction CASE pour une nouvelle valeur, suivez ces étapes :

  • Syntaxe :
UPDATE table_name
SET column_name = CASE
    WHEN condition1 THEN value1
    WHEN condition2 THEN value2
    ...
    ELSE valueN
END
  • Exemple :
UPDATE ae44
SET price = CASE
    WHEN ID = 'AT259793380' THEN '500'
    WHEN ID = 'AT271729590' THEN '600'
    WHEN ID = 'AT275981020' THEN '700'
    ELSE NULL    -- Optional: Set values for the remaining matching ID values
END

Remarque : La requête fournie par la question met à jour les prix des enregistrements avec d'autres ID à NULL. Pour éviter cela :

Option 1 : Spécifiez une valeur par défaut :

UPDATE ae44
SET price = CASE
    WHEN ID IN ('AT259793380', 'AT271729590', 'AT275981020') THEN
        CASE
            WHEN ID = 'AT259793380' THEN '500'
            WHEN ID = 'AT271729590' THEN '600'
            WHEN ID = 'AT275981020' THEN '700'
        END
    ELSE
        price
    END

Option 2 : Utilisez un JOIN :

UPDATE ae44
JOIN (
    SELECT  'AT259793380' AS oldval, '500' AS newval
    UNION ALL
    SELECT  'AT271729590' AS oldval, '600' AS newval
    UNION ALL
    SELECT  'AT275981020' AS oldval, '700' AS newval
) q ON ae44.id = q.oldval
SET price = q.newval

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn