Rumah >pangkalan data >tutorial mysql >Bagaimana MySQL Mengendalikan OR dan AND Operator Keutamaan dalam Klausa WHERE?

Bagaimana MySQL Mengendalikan OR dan AND Operator Keutamaan dalam Klausa WHERE?

Susan Sarandon
Susan Sarandonasal
2024-12-10 20:58:10513semak imbas

How Does MySQL Handle OR and AND Operator Precedence in WHERE Clauses?

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:

  1. Kurungan sentiasa menimpa keutamaan.
  2. Pengendali dengan keutamaan yang sama dinilai dari kiri ke kanan.
  3. DAN mempunyai keutamaan yang lebih tinggi daripada OR.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn