在 MySQL 中,邏輯運算子(例如 OR 和 AND)的運算順序決定了複雜查詢的解釋。本文介紹了優先級規則以及它們如何影響查詢結果。
MySQL文件提供了運算符優先級的完整列表,如下所示:
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), :=
根據對於此優先級層次結構,將解釋以下查詢如下:
SELECT * FROM tablename WHERE display = 1 OR ( display = 2 AND content LIKE "%hello world%" ) OR tags LIKE "%hello world%" OR title = "%hello world%"
上述查詢尋找符合以下任一條件的行:
WHERE 子句依下列順序計算:
為了確保明確的解釋,建議明確使用括號。例如:
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 查詢中的「OR」和「AND」邏輯?的詳細內容。更多資訊請關注PHP中文網其他相關文章!