Heim >Datenbank >MySQL-Tutorial >Warum wählt meine MySQL CASE WHEN-Anweisung die falsche Bedingung, wenn „base_price' 0 ist?
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!