Komplexität von CASE..WHEN in MySQL
Die CASE..WHEN-Anweisung in MySQL bietet eine vielseitige Methode zur Auswertung bedingter Ausdrücke. Bei der Arbeit mit bestimmten Szenarien treten jedoch Komplexitäten auf.
Mehrdeutige CASE-Syntax
Eine solche Komplexität tritt auf, wenn die Spalte „base_price“ innerhalb des CASE-Ausdrucks vorangestellt wird. Wie in der Beispielabfrage zu sehen ist, führt die Verwendung von course_enrollment_settings.base_price innerhalb der WHEN-Klauseln zu Mehrdeutigkeiten.
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
Problem:
In dieser Abfrage ist die CASE-Anweisung falsch formuliert. Durch die Einbindung von course_enrollment_settings.base_price nach WHEN kommt es zu einer falschen Auswertung der Bedingungen.
Lösung:
Um dieses Problem zu beheben, entfernen Sie das Tabellenpräfix im CASE-Ausdruck :
SELECT CASE WHEN base_price = 0 THEN 1 ... END
Zwei Formen von CASE
Die CASE-Anweisung hat zwei verschiedene Formen:
Durch die Verwendung der richtigen Form und das Entfernen des redundanten Präfixes wertet der CASE-Ausdruck die Bedingungen genau aus.
Das obige ist der detaillierte Inhalt vonWie vermeide ich Mehrdeutigkeiten und verwende CASE..WHEN-Anweisungen in MySQL richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!