Heim >Datenbank >MySQL-Tutorial >Warum scheint meine SQL-WHERE-Klausel einen Parameter zu ignorieren?
Fehlerbehebung bei SQL-WHERE-Klauseln: Übersehene Adressierungsparameter
Dieser Artikel befasst sich mit einem häufigen SQL-Abfrageproblem, bei dem die WHERE
-Klausel scheinbar einen angegebenen Parameter ignoriert. Betrachten Sie dieses Beispiel:
<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>
Diese Abfrage gibt unerwartet Zeilen zurück, in denen university
nicht „2“ ist. Das Problem liegt in der Priorität der Operatoren und der Reihenfolge der Operationen.
Die Lösung besteht darin, die WHERE
-Klausel mithilfe von Klammern umzustrukturieren, um die Bedingungen korrekt zu gruppieren:
<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>
Durch das Einschließen der MATCH
- und LIKE
-Bedingungen in Klammern stellen wir sicher, dass sowohl die Volltextsuche als auch die LIKE
-Bedingungen nur auf Zeilen angewendet werden, in denen university = '2'
. Der AND
-Operator schränkt die Ergebnisse dann korrekt auf diejenigen ein, die alle angegebenen Kriterien erfüllen. Diese überarbeitete Struktur garantiert genaue Ergebnisse basierend auf der vorgesehenen Parameterfilterung.
Das obige ist der detaillierte Inhalt vonWarum scheint meine SQL-WHERE-Klausel einen Parameter zu ignorieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!