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 ?
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%"
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%")
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%")
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 :
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%")
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!