MySQL ATAU/DAN Keutamaan Operator Dijelaskan
Memahami keutamaan operator adalah penting untuk mentafsir aliran logik pertanyaan SQL. Dalam MySQL, OR dan AND mempunyai keutamaan yang berbeza, yang mempengaruhi susunan ia dinilai.
Tafsiran Pertanyaan
Mari kita pertimbangkan pertanyaan berikut:
SELECT * FROM tablename WHERE display = 1 OR display = 2 AND content LIKE "%hello world%" OR tags LIKE "%hello world%" OR title = "%hello world%"
Menurut dokumentasi MySQL, OR dan AND mempunyai keutamaan yang sama. Oleh itu, pertanyaan boleh ditafsirkan dalam dua cara:
Tafsiran 1:
(display = 1 OR display = 2) AND (content LIKE "%hello world%" OR tags LIKE "%hello world%" OR title = "%hello world%")
Tafsiran ini mengutamakan pengendali OR dalam kurungan, mengumpulkan baris dengan paparan sama dengan 1 atau 2 dengan baris yang sepadan dengan mana-mana kandungan, teg atau tajuk kriteria.
Tafsiran 2:
((display = 1 OR display = 2) AND (content LIKE "%hello world%")) OR (tags LIKE "%hello world%" OR title = "%hello world%")
Dalam tafsiran ini, operator AND mengikat lebih ketat daripada OR. Nilai paparan mesti sepadan dengan 1 atau 2, DAN sekurang-kurangnya satu kandungan, teg atau syarat tajuk mesti dipenuhi.
Peraturan Keutamaan
Untuk mengelakkan kekeliruan, gunakan peraturan keutamaan pengendali berikut:
Pendekatan Disyorkan
Untuk kejelasan, himpunkan klausa secara eksplisit menggunakan kurungan, terutamanya apabila menggunakan pelbagai operator logik. Pertimbangkan pertanyaan yang diubah suai berikut:
SELECT * FROM tablename WHERE (display = 1 OR display = 2) AND (content LIKE "%hello world%" OR tags LIKE "%hello world%" OR title LIKE "%hello world%")
Pendekatan ini dengan jelas mentakrifkan aliran logik yang dimaksudkan, memastikan pertanyaan itu berfungsi seperti yang diharapkan.
Atas ialah kandungan terperinci Bagaimana MySQL Mengendalikan OR dan AND Operator Keutamaan dalam Klausa WHERE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!