Comment puis-je l'utiliser correctement les CAS..QUAND dans MySQL

Voici une démo de la requête, un avis c'est très simple, Récupère seulement où prix_de_base est de 0,
Et encore, il choisit la condition 3:

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

base_price est decimal(8,0)

Lorsque l'exécuter sur ma DB, j'obtiens:

3 0

3 0

3 0

3 0

3 0

  • donc sa prise 3 u veux dire.. ?
  • oui, étrange, non?
  • Pas vraiment. Ce que vous avez fait est équivalent à quelque chose comme switch (x) { case (x==0): ... case (x<5): ... case (x>5): ... } en C. Vous êtes de mélange des approches et il est à l'origine des comportements inattendus.