Dokumentasi MySQL memiliki halaman bagus dengan informasi tentang operator mana yang didahulukan.
Dari halaman itu,
12.3.1. Prioritas Operator
Prioritas operator ditampilkan dalam daftar berikut, dari prioritas tertinggi hingga terendah. Operator yang ditampilkan bersama dalam satu baris memiliki prioritas yang sama.
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), :=
Jadi kueri asli Anda
Select
*
from tablename
where
display = 1
or display = 2
and content like "%hello world%"
or tags like "%hello world%"
or title = "%hello world%"
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%")
Jika ragu, gunakan tanda kurung untuk memperjelas maksud Anda. Meskipun informasi di halaman MySQL sangat membantu, mungkin tidak langsung terlihat jika kueri pernah ditinjau kembali.
Anda mungkin mempertimbangkan sesuatu seperti berikut ini. Perhatikan bahwa saya telah mengubah title = "%hello world%"
untuk title like "%hello world%"
, karena itu lebih sesuai dengan tujuan yang Anda jelaskan.
Select
*
from tablename
where
(
(display = 1)
or (display = 2)
) and (
(content like "%hello world%")
or (tags like "%hello world%")
or (title like "%hello world%")
)