Maison >base de données >tutoriel mysql >Pourquoi ma requête SQL ignore-t-elle le filtre universitaire et comment puis-je y remédier ?

Pourquoi ma requête SQL ignore-t-elle le filtre universitaire et comment puis-je y remédier ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-19 10:02:09979parcourir

Why is my SQL query ignoring the university filter, and how can I fix it?

Dépannage d'une requête SQL : problème de filtre universitaire

Cette requête SQL cible la table "people", en utilisant plusieurs filtres pour affiner les résultats. Le problème est que la requête renvoie des enregistrements qui ne devraient pas passer le filtre universitaire. Cela provient de problèmes de priorité des opérateurs dans la clause WHERE.

La requête d'origine souffre d'une application incorrecte des opérateurs AND et OR. La priorité plus élevée de AND fait que la condition university='2' est liée de manière incorrecte uniquement à l'opération MATCH. Les filtres fname et lname sont évalués indépendamment, conduisant à des résultats inattendus.

La solution consiste à restructurer la requête pour appliquer le bon ordre des opérations :

<code class="language-sql">SELECT *
FROM people
WHERE
    university='2'
    AND (
        MATCH (lname,fname) AGAINST ('+massive' IN BOOLEAN MODE)
        OR fname LIKE '%box%'
        OR lname LIKE '%box%'
    );</code>

En regroupant les filtres fname et lname à l'aide de parenthèses, nous nous assurons que la condition university='2' s'applique aux trois critères. Cela garantit que seuls les enregistrements de l'université « 2 » satisfaisant au moins une des conditions basées sur le nom sont inclus dans la sortie.

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