Heim > Datenbank > MySQL-Tutorial > Wie vermeide ich Mehrdeutigkeiten und verwende CASE..WHEN-Anweisungen in MySQL richtig?

Wie vermeide ich Mehrdeutigkeiten und verwende CASE..WHEN-Anweisungen in MySQL richtig?

Patricia Arquette
Freigeben: 2024-12-26 06:17:13
Original
847 Leute haben es durchsucht

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

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
Nach dem Login kopieren

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
Nach dem Login kopieren

Zwei Formen von CASE

Die CASE-Anweisung hat zwei verschiedene Formen:

  • Einfaches CASE:Wird für einfache bedingte Ausdrücke mit Gleichheitsprüfungen verwendet.
  • Gesuchter Fall: Verwendet Suchbedingungen wie im bereitgestellten Beispiel. In dieser Form sollte das Präfix innerhalb der WHEN-Klauseln weggelassen werden.

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage