首頁 >資料庫 >mysql教程 >如何在複雜SQL查詢中正確套用WHERE子句過濾?

如何在複雜SQL查詢中正確套用WHERE子句過濾?

Barbara Streisand
Barbara Streisand原創
2025-01-19 10:16:091002瀏覽

How to Correctly Apply WHERE Clause Filtering in Complex SQL Queries?

SQL語句中WHERE參數的優先權問題

以下SQL查詢旨在從「people」表中檢索數據,並將結果限制為「university=2」的記錄:

<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」條件的意外結果。為了解決這個問題,我們需要確保「university=2」條件嚴格限制搜尋結果。

調整括號以控制運算順序

此查詢的問題在於括號使用不當,這影響了表達式的運算順序。在原始查詢中,“AND”的優先權高於“OR”,這意味著它首先被計算。結果,「university=2」只與「MATCH (lname,fname) AGAINST (' massive' IN BOOLEAN MODE)」組合,而沒有與「fname/lname」測試組合。

為了修正這個問題,我們需要調整括號,以確保「university=2」與整個搜尋條件組合:

<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」條件現在包含在括號內,表示它應該先計算,然後與第二組括號內的搜尋條件組合。這確保了只有「university=2」為真的記錄才會在搜尋中被考慮。

以上是如何在複雜SQL查詢中正確套用WHERE子句過濾?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn