In MySQL bestimmt die Reihenfolge der Operationen für logische Operatoren wie OR und AND die Interpretation komplexer Abfragen. In diesem Artikel werden die Prioritätsregeln und ihre Auswirkungen auf die Abfrageergebnisse erläutert.
Die MySQL-Dokumentation enthält eine umfassende Liste der Operatorprioritäten wie folgt:
INTERVAL BINARY, COLLATE ! - (unary minus), ~ (unary bit inversion) ^ *, /, DIV, %, MOD -, + <<, >> & | = (comparison), <=, >=, >, <, <>, !=, IS, LIKE, REGEXP, IN BETWEEN, CASE, WHEN, THEN, ELSE NOT &&, AND XOR ||, OR = (assignment), :=
Gemäß Für diese Vorranghierarchie würde die folgende Abfrage interpretiert werden als:
SELECT * FROM tablename WHERE display = 1 OR ( display = 2 AND content LIKE "%hello world%" ) OR tags LIKE "%hello world%" OR title = "%hello world%"
Die obige Abfrage sucht nach Zeilen, in denen entweder:
Die WHERE-Klausel wird in der folgenden Reihenfolge ausgewertet:
An Um eine eindeutige Interpretation zu gewährleisten, wird die explizite Verwendung von Klammern empfohlen. Zum Beispiel:
SELECT * FROM tablename WHERE ((display = 1) OR (display = 2)) AND ((content LIKE "%hello world%") OR (tags LIKE "%hello world%") OR (title LIKE "%hello world%"))
Diese Abfrage stellt sicher, dass Zeilen abgerufen werden, wenn sie eine der folgenden Bedingungen erfüllen:
Das obige ist der detaillierte Inhalt vonWie wirkt sich die Operatorpriorität auf die „OR'- und „AND'-Logik von MySQL in Abfragen aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!