Fehlerbehebung bei einer SQL-Abfrage: Problem mit dem Universitätsfilter
Diese SQL-Abfrage zielt auf die Tabelle „Personen“ ab und verwendet mehrere Filter, um die Ergebnisse zu verfeinern. Das Problem besteht darin, dass die Abfrage Datensätze zurückgibt, die den Universitätsfilter nicht passieren sollten. Dies ist auf Probleme mit der Operatorpriorität innerhalb der WHERE
-Klausel zurückzuführen.
Die ursprüngliche Abfrage leidet unter der falschen Anwendung der Operatoren AND
und OR
. Die höhere Priorität von AND
führt dazu, dass die Bedingung university='2'
fälschlicherweise nur mit der Operation MATCH
verknüpft wird. Die Filter fname
und lname
werden unabhängig voneinander ausgewertet, was zu unbeabsichtigten Ergebnissen führt.
Die Lösung besteht darin, die Abfrage umzustrukturieren, um die richtige Reihenfolge der Vorgänge zu erzwingen:
<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 die Gruppierung der Filter fname
und lname
in Klammern stellen wir sicher, dass die Bedingung university='2'
für alle drei Kriterien gilt. Dadurch wird gewährleistet, dass nur Datensätze der Universität „2“, die mindestens eine der namensbasierten Bedingungen erfüllen, in die Ausgabe einbezogen werden.
Das obige ist der detaillierte Inhalt vonWarum ignoriert meine SQL-Abfrage den Universitätsfilter und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!