Heim >Datenbank >MySQL-Tutorial >Warum wählt meine MySQL CASE WHEN-Anweisung die falsche Bedingung, wenn „base_price' 0 ist?

Warum wählt meine MySQL CASE WHEN-Anweisung die falsche Bedingung, wenn „base_price' 0 ist?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-25 02:02:09907Durchsuche

Why Does My MySQL CASE WHEN Statement Choose the Wrong Condition When `base_price` is 0?

Korrekte Verwendung der CASE..WHEN-Anweisung in MySQL

In MySQL können Sie mit der CASE..WHEN-Anweisung verschiedene Bedingungen auswerten und Geben Sie basierend auf jeder Bedingung ein bestimmtes Ergebnis zurück. Es ist jedoch wichtig, es richtig zu verwenden, um unerwartete Ergebnisse zu vermeiden.

Frage:

Beim Ausführen einer CASE..WHEN-Anweisung zum Abrufen von Datensätzen, bei denen der Basispreis 0 ist, Warum wird die Bedingung mit dem Wert 3 anstelle der ersten Bedingung gewählt, obwohl der angegebene Wert vorhanden ist? 0?

Antwort:

Das Problem liegt in der Syntax der CASE-Anweisung. In der bereitgestellten Abfrage:

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

wertet die Anweisung die Bedingungen aus und gibt die erste übereinstimmende Bedingung zurück. Die Syntax ist jedoch falsch, da der Spaltenname course_enrollment_settings.base_price unmittelbar nach der CASE-Anweisung wiederholt wird. Dies führt dazu, dass die Anweisung ihr eigenes Ergebnis mit den übrigen Bedingungen vergleicht, was dazu führt, dass immer die 3. Bedingung ausgewählt wird.

Um das Problem zu beheben, entfernen Sie den Spaltennamen an dieser Stelle:

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

Die CASE-Anweisung wertet die Bedingungen jetzt ohne unnötige Wiederholungen korrekt aus und stellt so das erwartete Ergebnis sicher.

Das obige ist der detaillierte Inhalt vonWarum wählt meine MySQL CASE WHEN-Anweisung die falsche Bedingung, wenn „base_price' 0 ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn