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
Libérer: 2024-12-31 18:56:10
original
895 Les gens l'ont consulté

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

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

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!

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