Dalam MySQL, susunan operasi untuk operator logik, seperti OR dan AND, menentukan tafsiran pertanyaan kompleks. Artikel ini menerangkan peraturan keutamaan dan cara ia memberi kesan kepada hasil pertanyaan.
Dokumentasi MySQL menyediakan senarai keutamaan operator yang komprehensif, seperti berikut:
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), :=
Mengikut kepada hierarki keutamaan ini, pertanyaan berikut akan ditafsirkan sebagai:
SELECT * FROM tablename WHERE display = 1 OR ( display = 2 AND content LIKE "%hello world%" ) OR tags LIKE "%hello world%" OR title = "%hello world%"
Pertanyaan di atas mencari baris di mana sama ada:
Klausa WHERE dinilai dalam susunan berikut:
Untuk memastikan tafsiran yang tidak jelas, adalah disyorkan untuk menggunakan kurungan secara eksplisit. Contohnya:
SELECT * FROM tablename WHERE ((display = 1) OR (display = 2)) AND ((content LIKE "%hello world%") OR (tags LIKE "%hello world%") OR (title LIKE "%hello world%"))
Pertanyaan ini memastikan baris diambil jika memenuhi mana-mana syarat berikut:
Atas ialah kandungan terperinci Bagaimanakah Keutamaan Operator Mempengaruhi Logik `OR` dan `DAN` MySQL dalam Pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!