Rumah >pangkalan data >tutorial mysql >Bagaimanakah MySQL Menilai Operator `OR` dan `DAN` dalam Klausa `WHERE`?

Bagaimanakah MySQL Menilai Operator `OR` dan `DAN` dalam Klausa `WHERE`?

DDD
DDDasal
2024-12-10 22:17:11334semak imbas

How Does MySQL Evaluate `OR` and `AND` Operators in `WHERE` Clauses?

MySQL OR/AND Precedence

Pengendali logik MySQL mempunyai peraturan keutamaan khusus yang menentukan cara berbilang syarat dinilai dalam pertanyaan. Memahami peraturan ini adalah penting untuk mencipta pertanyaan yang cekap dan tepat.

Mengenai pertanyaan anda, anda ingin mendapatkan semula baris dengan paparan 1 atau 2 dan di mana mana-mana kandungan, teg atau tajuk mengandungi "hello dunia." Peraturan keutamaan untuk pengendali MySQL ialah:

(highest precedence)
INTERVAL
BINARY, COLLATE
!
- (unary minus), ~ (unary bit inversion)
^
*, /, DIV, %, MOD
-, +
<<, >>
&
|
= (comparison), <=, >=, >, <, <>, !=, IS, LIKE, REGEXP, IN
BETWEEN, CASE, WHEN, THEN, ELSE
NOT
&&, AND
XOR
||, OR
= (assignment), :=
(lowest precedence)

Dengan mengambil kira peraturan ini, mari analisa pertanyaan anda:

Select * from tablename where display = 1 or display = 2 and content like "%hello world%" or tags like "%hello world%" or title = "%hello world%"

Mengikut peraturan keutamaan, pengendali logik dinilai dalam kurungan :

  • Batin kurungan: (paparan = 1) atau (paparan = 2) memastikan baris dengan paparan 1 atau 2 akan diambil.
  • Kurungan luar: ((paparan = 1) atau (paparan = 2)) dan (kandungan seperti "%hello world%") atau (tag seperti "%hello world%") atau (tajuk seperti "%hello world%") mentakrifkan syarat untuk memadankan "hello world."

Disebabkan keutamaan ATAU melebihi DAN, pertanyaan akan ditafsirkan seperti berikut:

Select * from tablename where (display = 1 or display = 2) and (content like "%hello world%" or (tags like "%hello world%" or title = "%hello world%"))

Oleh itu, pertanyaan akan mendapatkan semula baris di mana:

  • paparan ialah 1 atau 2 dan
  • mana-mana kandungan, teg atau tajuk mengandungi "hello world."

Untuk mengelakkan kekeliruan, adalah disyorkan untuk menggunakan kurungan untuk menunjukkan secara jelas susunan penilaian yang diingini. Sebagai contoh, pertanyaan berikut akan mendapatkan semula baris dengan paparan sama ada 1 atau 2, atau di mana mana-mana kandungan, teg atau tajuk mengandungi "hello world":

Select * from tablename where (display = 1 or display = 2) and (content like "%hello world%" or tags like "%hello world%" or title like "%hello world%")

Atas ialah kandungan terperinci Bagaimanakah MySQL Menilai Operator `OR` dan `DAN` 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