SQL WHERE 子句故障排除:解决参数忽略问题
本文解决了一个常见的 SQL 查询问题,其中 WHERE
子句似乎忽略了指定的参数。 考虑这个例子:
<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>
此查询意外地返回 university
不为“2”的行。问题在于运算符优先级和运算顺序。
解决方案涉及使用括号重组 WHERE
子句以正确分组条件:
<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>
通过将 MATCH
和 LIKE
条件括在括号内,我们确保全文搜索和 LIKE
条件都仅应用于包含 university = '2'
的行。 然后,AND
运算符正确地将结果限制为满足所有指定条件的结果。 这种修改后的结构保证了基于预期参数过滤的准确结果。
以上是为什么我的 SQL WHERE 子句似乎忽略了某个参数?的详细内容。更多信息请关注PHP中文网其他相关文章!