Maison > base de données > tutoriel mysql > Comment MySQL gère-t-il la priorité des opérateurs OR et AND dans les clauses WHERE ?

Comment MySQL gère-t-il la priorité des opérateurs OR et AND dans les clauses WHERE ?

Susan Sarandon
Libérer: 2024-12-10 20:58:10
original
510 Les gens l'ont consulté

How Does MySQL Handle OR and AND Operator Precedence in WHERE Clauses?

La priorité des opérateurs MySQL OR/AND expliquée

Comprendre la priorité des opérateurs est cruciale pour interpréter le flux logique des requêtes SQL. Dans MySQL, OR et AND ont des priorités différentes, affectant l'ordre dans lequel ils sont évalués.

Interprétation des requêtes

Considérons la requête suivante :

SELECT * FROM tablename
WHERE display = 1 OR display = 2
AND content LIKE "%hello world%"
OR tags LIKE "%hello world%"
OR title = "%hello world%"
Copier après la connexion

Selon la documentation MySQL, OR et AND ont la même priorité. Par conséquent, la requête peut être interprétée de deux manières :

Interprétation 1 :

(display = 1 OR display = 2) AND (content LIKE "%hello world%" OR tags LIKE "%hello world%" OR title = "%hello world%")
Copier après la connexion

Cette interprétation donne la priorité à l'opérateur OU entre parenthèses, regroupant les lignes où l'affichage est égal à 1 ou 2 avec des lignes correspondant à l'un des critères de contenu, de balises ou de titre.

Interprétation 2 :

((display = 1 OR display = 2) AND (content LIKE "%hello world%")) OR (tags LIKE "%hello world%" OR title = "%hello world%")
Copier après la connexion

Dans cette interprétation, l'opérateur AND est plus étroitement lié que OR. Les valeurs d'affichage doivent toutes deux correspondre à 1 ou 2, ET au moins une des conditions de contenu, de balises ou de titre doit être remplie.

Règles de priorité

Pour éviter toute confusion, utilisez les règles de priorité des opérateurs suivantes :

  1. Les parenthèses remplacent toujours priorité.
  2. Les opérateurs ayant la même priorité sont évalués de gauche à droite.
  3. AND a une priorité plus élevée que OR.

Approche recommandée

Pour plus de clarté, regroupez explicitement les clauses à l'aide de parenthèses, en particulier lorsque vous utilisez plusieurs opérateurs logiques. Considérez la requête modifiée suivante :

SELECT * FROM tablename
WHERE
    (display = 1 OR display = 2)
    AND (content LIKE "%hello world%" OR tags LIKE "%hello world%" OR title LIKE "%hello world%")
Copier après la connexion

Cette approche définit clairement le flux logique prévu, garantissant que la requête se comporte comme prévu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal