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'
条件が 3 つの基準すべてに適用されるようになります。 これにより、名前ベースの条件の少なくとも 1 つを満たす大学 '2' のレコードのみが出力に含まれることが保証されます。
以上が私の SQL クエリが大学フィルターを無視するのはなぜですか?どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。