Erklärung der OR/AND-Operatorpriorität in MySQL
Das Verständnis der Operatorpriorität ist für die Interpretation des logischen Ablaufs von SQL-Abfragen von entscheidender Bedeutung. In MySQL haben OR und AND unterschiedliche Prioritäten, was sich auf die Reihenfolge auswirkt, in der sie ausgewertet werden.
Abfrageinterpretation
Betrachten wir die folgende Abfrage:
SELECT * FROM tablename WHERE display = 1 OR display = 2 AND content LIKE "%hello world%" OR tags LIKE "%hello world%" OR title = "%hello world%"
Laut MySQL-Dokumentation haben OR und AND die gleiche Priorität. Daher kann die Abfrage auf zwei Arten interpretiert werden:
Interpretation 1:
(display = 1 OR display = 2) AND (content LIKE "%hello world%" OR tags LIKE "%hello world%" OR title = "%hello world%")
Diese Interpretation priorisiert den ODER-Operator in Klammern und gruppiert Zeilen, bei denen die Anzeige gleich 1 ist oder 2 mit Zeilen, die einem der Inhalts-, Tags- oder Titelkriterien entsprechen.
Interpretation 2:
((display = 1 OR display = 2) AND (content LIKE "%hello world%")) OR (tags LIKE "%hello world%" OR title = "%hello world%")
In dieser Interpretation bindet der AND-Operator enger als OR. Die Anzeigewerte müssen beide mit 1 oder 2 übereinstimmen UND mindestens eine der Inhalts-, Tags- oder Titelbedingungen muss erfüllt sein.
Vorrangregeln
Um Verwirrung zu vermeiden, Verwenden Sie die folgenden Prioritätsregeln für Operatoren:
Empfohlener Ansatz
Aus Gründen der Klarheit: Gruppieren Sie Klauseln explizit mithilfe von Klammern, insbesondere wenn Sie mehrere logische Operatoren verwenden. Betrachten Sie die folgende modifizierte Abfrage:
SELECT * FROM tablename WHERE (display = 1 OR display = 2) AND (content LIKE "%hello world%" OR tags LIKE "%hello world%" OR title LIKE "%hello world%")
Dieser Ansatz definiert klar den beabsichtigten logischen Fluss und stellt sicher, dass sich die Abfrage wie erwartet verhält.
Das obige ist der detaillierte Inhalt vonWie geht MySQL mit der Vorrangstellung von OR- und AND-Operatoren in WHERE-Klauseln um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!