在 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中文网其他相关文章!