Heim > Datenbank > MySQL-Tutorial > Haben die SQL-Operatoren „AND' und „OR' unterschiedliche Prioritäten und wie wirkt sich dies auf die Abfrageergebnisse aus?

Haben die SQL-Operatoren „AND' und „OR' unterschiedliche Prioritäten und wie wirkt sich dies auf die Abfrageergebnisse aus?

Linda Hamilton
Freigeben: 2025-01-22 21:57:13
Original
293 Leute haben es durchsucht

Do SQL's `AND` and `OR` Operators Have Different Precedence, and How Does This Affect Query Results?

Vorrang logischer SQL-Operatoren: AND und OR

Frage:

Betrachten Sie die folgende SQL-Anweisung:

SELECT [...]
FROM [...]
WHERE some_col IN (1,2,3,4,5) AND some_other_expr
Nach dem Login kopieren

und

SELECT [...]
FROM [...]
WHERE some_col IN (1,2,3) OR some_col IN (4,5) AND some_other_expr
Nach dem Login kopieren

Sind diese beiden Aussagen gleichwertig? Wenn sie nicht gleichwertig sind, wie priorisieren wir sie?

Antwort:

Priorität von AND- und OR-Operatoren

In SQL bestimmt die Operatorpriorität die Reihenfolge, in der logische Operatoren in der WHERE-Klausel ausgewertet werden. Die Rangfolge der AND- und OR-Operatoren ist wie folgt:

  • Der UND-Operator hat eine höhere Priorität als der ODER-Operator.

Das bedeutet, dass auch dann, wenn der UND-Operator rechts vom ODER-Operator erscheint, dieser zuerst ausgewertet wird.

Priorität auf Aussage anwenden

In der gegebenen Aussage:

  • Die erste Anweisung verwendet nur den AND-Operator, daher ist die Priorität einfach.
  • Die zweite Anweisung verwendet eine Kombination aus ODER- und UND-Operatoren, wobei der ODER-Operator vor dem UND-Operator steht.

Daher wird die zweite Aussage wie folgt bewertet:

WHERE (some_col IN (1,2,3)) OR (some_col IN (4,5) AND some_other_expr)
Nach dem Login kopieren

Überprüfung der Wahrheitstabelle

Hier ist eine Wahrheitstabelle, die die berechneten Unterschiede veranschaulicht:

some_col some_other_expr 语句 1 语句 2
1 0 False True
2 1 True True
3 0 False True
4 0 False False
5 1 False True

Wie wir sehen können, unterscheiden sich die Wahrheitswerte dieser beiden Aussagen in der ersten Zeile, was zeigt, dass sie nicht gleichwertig sind.

Verwenden Sie Klammern, um die Priorität zu überschreiben

Wenn Sie die Berechnungsreihenfolge ändern möchten, können Sie Klammern verwenden, um die Standardpriorität zu überschreiben. Um beispielsweise die zweite Aussage der ersten gleichzusetzen, würde sie wie folgt geschrieben werden:

WHERE (some_col IN (1,2,3) OR some_col IN (4,5)) AND some_other_expr
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonHaben die SQL-Operatoren „AND' und „OR' unterschiedliche Prioritäten und wie wirkt sich dies auf die Abfrageergebnisse aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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