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
390 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!

source:php.cn
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