MySQL OR/AND-Vorrang
Die logischen Operatoren von MySQL verfügen über spezifische Vorrangregeln, die vorschreiben, wie mehrere Bedingungen in einer Abfrage ausgewertet werden. Das Verständnis dieser Regeln ist entscheidend für die Erstellung effizienter und genauer Abfragen.
In Bezug auf Ihre Abfrage möchten Sie Zeilen abrufen, in denen die Anzeige 1 oder 2 ist und in denen Inhalt, Tags oder Titel „Hallo Welt“ enthalten. Die Vorrangregeln für MySQL-Operatoren sind:
(highest precedence) 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), := (lowest precedence)
Unter Berücksichtigung dieser Regeln analysieren wir Ihre Abfrage:
Select * from tablename where display = 1 or display = 2 and content like "%hello world%" or tags like "%hello world%" or title = "%hello world%"
Gemäß den Vorrangregeln werden die logischen Operatoren in Klammern ausgewertet :
Aufgrund des Vorrangs von ODER vor UND wird die Abfrage wie folgt interpretiert:
Select * from tablename where (display = 1 or display = 2) and (content like "%hello world%" or (tags like "%hello world%" or title = "%hello world%"))
Daher ruft die Abfrage Zeilen ab, in denen:
Um Verwirrung zu vermeiden, wird empfohlen, Klammern zu verwenden, um die gewünschte Auswertungsreihenfolge explizit anzugeben. Die folgende Abfrage ruft beispielsweise Zeilen ab, in denen entweder die Anzeige 1 oder 2 ist oder in denen Inhalt, Tags oder Titel „Hallo Welt“ enthalten:
Select * from tablename where (display = 1 or display = 2) and (content like "%hello world%" or tags like "%hello world%" or title like "%hello world%")
Das obige ist der detaillierte Inhalt vonWie wertet MySQL „OR'- und „AND'-Operatoren in „WHERE'-Klauseln aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!