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