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

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

Barbara Streisand
發布: 2025-01-19 10:16:09
原創
954 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板