Maison > base de données > tutoriel mysql > Comment éviter toute ambiguïté et utiliser correctement les instructions CASE..WHEN dans MySQL ?

Comment éviter toute ambiguïté et utiliser correctement les instructions CASE..WHEN dans MySQL ?

Patricia Arquette
Libérer: 2024-12-26 06:17:13
original
845 Les gens l'ont consulté

How to Avoid Ambiguity and Correctly Use CASE..WHEN Statements in MySQL?

Complexités de CASE..WHEN dans MySQL

L'instruction CASE..WHEN dans MySQL fournit une méthode polyvalente pour l'évaluation des expressions conditionnelles. Cependant, des complexités surviennent lorsque l'on travaille avec certains scénarios.

Syntaxe CASE ambiguë

Une telle complexité est rencontrée lorsque la colonne base_price est préfixée dans l'expression CASE. Comme le montre l'exemple de requête, l'utilisation de course_enrollment_settings.base_price dans les clauses WHEN introduit une ambiguïté.

Requête :

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

Problème :

Dans cette requête, l'instruction CASE est mal formulée. En incluant course_enrollment_settings.base_price après WHEN, cela conduit à une évaluation incorrecte des conditions.

Résolution :

Pour résoudre ce problème, éliminez le préfixe de table dans l'expression CASE. :

SELECT
   CASE
    WHEN base_price = 0      THEN 1
    ...
    END
Copier après la connexion

Deux formes de CASE

L'instruction CASE a deux formes distinctes :

  • CAS simple : Utilisé pour les expressions conditionnelles simples impliquant des contrôles d'égalité.
  • CAS recherché : Utilise des conditions de recherche comme dans l'exemple fourni. Sous cette forme, le préfixe dans les clauses WHEN doit être omis.

En utilisant la forme correcte et en supprimant le préfixe redondant, l'expression CASE évalue avec précision les conditions.

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