Heim > Datenbank > MySQL-Tutorial > Wie wertet MySQL „OR'- und „AND'-Operatoren in „WHERE'-Klauseln aus?

Wie wertet MySQL „OR'- und „AND'-Operatoren in „WHERE'-Klauseln aus?

DDD
Freigeben: 2024-12-10 22:17:11
Original
333 Leute haben es durchsucht

How Does MySQL Evaluate `OR` and `AND` Operators in `WHERE` Clauses?

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

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

Gemäß den Vorrangregeln werden die logischen Operatoren in Klammern ausgewertet :

  • Innere Klammern: (Anzeige = 1) oder (Anzeige = 2) stellt sicher, dass Zeilen mit Anzeige 1 oder 2 abgerufen werden.
  • Äußere Klammern: ((display = 1) oder (display = 2)) und (Inhalt wie „%hello world%") oder (Tags wie "%hello world%") oder (Titel wie "%hello world%") definiert die Bedingungen für die Übereinstimmung mit "hello Welt.“

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

Daher ruft die Abfrage Zeilen ab, in denen:

  • Anzeige ist 1 oder 2 und
  • jeder Inhalt, Tags oder Titel enthält „Hallo Welt.“

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

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage