Maison > base de données > tutoriel mysql > 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
Libérer: 2024-11-16 09:35:03
original
438 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal