MySQL OR/AND 優先權
MySQL 的邏輯運算子具有特定的優先權規則,規定如何在查詢中評估多個條件。了解這些規則對於制定高效且準確的查詢至關重要。
關於您的查詢,您希望檢索 display 為 1 或 2 以及任何內容、標籤或標題包含「hello world」的行。 MySQL 運算子的優先權規則是:
(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)
考慮到這些規則,讓我們分析您的查詢:
Select * from tablename where display = 1 or display = 2 and content like "%hello world%" or tags like "%hello world%" or title = "%hello world%"
根據優先權規則,邏輯運算子在括號內進行計算:
由於OR 優先於AND,查詢將被解釋如下:
Select * from tablename where (display = 1 or display = 2) and (content like "%hello world%" or (tags like "%hello world%" or title = "%hello world%"))
因此,查詢將檢索以下行:
為了避免混淆,建議使用括號來明確指示所需的評估順序。顯示為1 或2 的行,或任何內容、標籤或標題包含「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%")
以上是MySQL 如何評估「WHERE」子句中的「OR」和「AND」運算子?的詳細內容。更多資訊請關注PHP中文網其他相關文章!