Maison >base de données >tutoriel mysql >Comment la priorité des opérateurs logiques de SQL affecte-t-elle les résultats des requêtes ?

Comment la priorité des opérateurs logiques de SQL affecte-t-elle les résultats des requêtes ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-22 21:51:11449parcourir

How Does SQL's Logical Operator Precedence Affect Query Results?

Priorité des opérateurs logiques SQL : comprendre son importance

En SQL, l'ordre des opérations des opérateurs logiques (notamment « ET » et « OU ») joue un rôle crucial dans la détermination des résultats des requêtes. Les opérateurs avec une priorité plus élevée sont évalués avant les opérateurs avec une priorité plus faible, ce qui peut conduire à des résultats différents.

ET et OU prioritaire

En SQL, "AND" a une priorité plus élevée que "OR". Prenons l'exemple suivant :

<code class="language-sql">SELECT [...]
FROM [...]
WHERE some_col in (1,2,3,4,5) AND some_other_expr</code>
<code class="language-sql">SELECT [...]
FROM [...]
WHERE some_col in (1,2,3) or some_col in (4,5) AND some_other_expr</code>

La première instruction renvoie les lignes où some_col est compris entre 1 et 5 et some_other_expr est vrai. Cependant, puisque « AND » a une priorité plus élevée que « OR », la deuxième instruction n’est pas équivalente.

Évaluation de la deuxième déclaration

Puisque « AND » a une priorité plus élevée, la deuxième instruction est calculée comme suit :

<code class="language-sql">WHERE (some_col in (1,2,3) or some_col in (4,5)) AND some_other_expr</code>

Cela signifie que la requête renvoie des lignes avec :

  • some_col dans la plage de 1 à 3, ou
  • some_colDans la fourchette 4-5

puis

  • some_other_expr est vrai

Pour obtenir la fonctionnalité souhaitée, les priorités peuvent être remplacées à l'aide de parenthèses :

<code class="language-sql">WHERE (some_col in (1,2,3) OR some_col in (4,5)) AND some_other_expr</code>

Cela garantit que la requête renvoie des lignes avec :

  • some_colDans la fourchette de 1 à 5

puis

  • some_other_expr est vrai

Référence prioritaire

Pour ceux qui souhaitent des éclaircissements supplémentaires, veuillez vous référer aux ressources suivantes :

  • Priorité des opérateurs Microsoft Transact-SQL
  • Priorité des opérateurs Oracle MySQL 9
  • Priorité de condition Oracle 10g
  • Priorité des opérateurs PostgreSQL
  • SQL compris par SQLite

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!

Déclaration:
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