Maison >base de données >tutoriel mysql >Comment puis-je utiliser correctement l'instruction CASE..WHEN de MySQL pour éviter des résultats inattendus ?

Comment puis-je utiliser correctement l'instruction CASE..WHEN de MySQL pour éviter des résultats inattendus ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-31 18:56:10910parcourir

How Can I Correctly Use MySQL's CASE..WHEN Statement to Avoid Unexpected Results?

Comprendre l'instruction CASE..WHEN dans MySQL

Lorsque vous travaillez avec MySQL, l'instruction CASE..WHEN est un outil précieux pour évaluer plusieurs conditions et renvoyant différentes valeurs en fonction de ces conditions. Cependant, il existe des moyens spécifiques de l'utiliser correctement pour éviter des résultats inattendus.

Considérez la requête suivante :

SELECT
   CASE course_enrollment_settings.base_price
    WHEN course_enrollment_settings.base_price = 0      THEN 1
    WHEN course_enrollment_settings.base_price<101      THEN 2
    WHEN course_enrollment_settings.base_price>100 AND   
                      course_enrollment_settings.base_price<201 THEN 3
        ELSE 6
   END AS 'calc_base_price',
   course_enrollment_settings.base_price
FROM
    course_enrollment_settings
WHERE course_enrollment_settings.base_price = 0

La requête vise à récupérer des cours avec un prix de base de zéro et à les attribuer sous condition. une valeur à 'calc_base_price' basée sur les fourchettes de prix. Cependant, le résultat renvoie « 3 » pour toutes les lignes avec base_price 0.

Pour résoudre ce problème, il est crucial de supprimer le nom de la colonne après CASE :

SELECT
   CASE
    WHEN base_price = 0      THEN 1
    ...
    END

Cela garantit que le CASE L'instruction évalue correctement les conditions et renvoie la valeur appropriée pour chaque ligne. L'instruction CASE a deux formes : une avec un nom de colonne cible et une sans. Dans ce scénario, le deuxième formulaire, qui utilise des conditions de recherche, est souhaité.

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