SQL 查询故障排除:大学过滤器问题
此 SQL 查询以“people”表为目标,使用多个过滤器来优化结果。 问题在于查询返回不应通过大学过滤器的记录。这源于 WHERE
子句中的运算符优先级问题。
原始查询由于 AND
和 OR
运算符的错误应用而受到影响。 AND
的优先级较高会导致 university='2'
条件仅错误链接到 MATCH
操作。 fname
和 lname
过滤器是独立评估的,会导致意想不到的结果。
解决方案涉及重组查询以强制执行正确的操作顺序:
<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>
通过使用括号对 fname
和 lname
过滤器进行分组,我们确保 university='2'
条件适用于所有三个条件。 这保证了输出中仅包含来自大学“2”的至少满足一个基于名称的条件的记录。
以上是为什么我的 SQL 查询忽略大学过滤器,如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!