Menyelesaikan Masalah Pertanyaan SQL: Isu Penapis Universiti
Pertanyaan SQL ini menyasarkan jadual "orang", menggunakan berbilang penapis untuk memperhalusi hasil. Masalahnya ialah pertanyaan mengembalikan rekod yang tidak sepatutnya melepasi penapis universiti. Ini berpunca daripada isu keutamaan operator dalam klausa WHERE
.
Pertanyaan asal mengalami penggunaan operator AND
dan OR
yang salah. Keutamaan AND
yang lebih tinggi menyebabkan keadaan university='2'
tidak dipautkan dengan betul hanya kepada operasi MATCH
. Penapis fname
dan lname
dinilai secara bebas, membawa kepada hasil yang tidak diingini.
Penyelesaian melibatkan penstrukturan semula pertanyaan untuk menguatkuasakan susunan operasi yang betul:
<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>
Dengan mengumpulkan penapis fname
dan lname
menggunakan kurungan, kami memastikan syarat university='2'
terpakai kepada ketiga-tiga kriteria. Ini menjamin bahawa hanya rekod dari universiti '2' yang memenuhi sekurang-kurangnya satu daripada syarat berasaskan nama disertakan dalam output.
Atas ialah kandungan terperinci Mengapa pertanyaan SQL saya mengabaikan penapis universiti, dan bagaimana saya boleh membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!