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中文網其他相關文章!