Maison  >  Article  >  base de données  >  Comment mettre à jour en masse des entrées MySQL avec des valeurs conditionnelles à l'aide de CASE ?

Comment mettre à jour en masse des entrées MySQL avec des valeurs conditionnelles à l'aide de CASE ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-16 09:35:03302parcourir

How to Mass Update MySQL Entries with Conditional Values Using CASE?

Mise à jour en masse des entrées MySQL avec des valeurs conditionnelles à l'aide de CASE

Dans MySQL, vous pouvez mettre à jour les entrées de table en fonction de conditions spécifiques à l'aide de l'instruction CASE. Voici comment procéder :

Problème : Correspondance des identifiants pour la mise à jour des prix

Vous avez la requête suivante :

update ae44
set Price = Case
when ID = 'AT259793380' then '500'
when ID = 'AT271729590' then '600'
when ID = 'AT275981020' then '700'
end case

Votre objectif est de mettre à jour en masse les prix des annonces en fonction de identifiants correspondants. Cependant, la requête ne renvoie pas les résultats escomptés.

Solution : utiliser CASE pour la mise à jour conditionnelle

Pour corriger la requête, vous devez utiliser l'instruction CASE correctement. Voici la syntaxe correcte :

UPDATE  ae44
SET     price =
        CASE
        WHEN ID = 'AT259793380' THEN
                '500'
        WHEN ID = 'AT271729590' THEN
                '600'
        WHEN ID = 'AT275981020' THEN
                '700'
        END

Notez que cette requête mettra à jour les prix des enregistrements avec d'autres identifiants sur NULL.

Solution alternative : exclusion des mises à jour nulles

Si vous le souhaitez pour mettre à jour uniquement les identifiants de votre liste et exclure les mises à jour nulles, vous pouvez utiliser la requête suivante :

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

Cette requête mettra à jour uniquement les prix des identifiants spécifiés dans la table temporaire créée à l'aide de l'instruction UNION ALL .

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