Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
`MySQL`如何定义`WHERE`子句中的顺序?_Mysql_Where_Where Clause_Logical Operators - Fatal编程技术网

`MySQL`如何定义`WHERE`子句中的顺序?

`MySQL`如何定义`WHERE`子句中的顺序?,mysql,where,where-clause,logical-operators,Mysql,Where,Where Clause,Logical Operators,请有人给我解释一下为什么: WHERE property_id = 1 OR property_id = 2 AND property_id = 3 及 给出不同的结果 以及由于And/OR逻辑运算符的优先级,MySQL如何定义WHERE子句中的顺序 第一个查询相当于 WHERE property_id = 1 OR (property_id = 2 AND property_id = 3) 因为AND的优先级高于OR运算符,因为AND/OR逻辑运算符的优先级 第一个查询相当

请有人给我解释一下为什么:

WHERE property_id = 1 OR property_id = 2
    AND property_id = 3

给出不同的结果


以及由于And/OR逻辑运算符的优先级,
MySQL
如何定义
WHERE
子句中的顺序

第一个查询相当于

WHERE property_id = 1 OR (property_id = 2
    AND property_id = 3)

因为AND的优先级高于OR运算符

,因为AND/OR逻辑运算符的优先级

第一个查询相当于

WHERE property_id = 1 OR (property_id = 2
    AND property_id = 3)
因为AND的优先级高于OR运算符

请检查运算符优先级

在第一个查询where子句中,检查此条件
property\u id=2和property\u id=3,因为
运算符的优先级高于
运算符

在第二个查询where子句中,首先检查此条件
(property\u id=1或property\u id=2)
,因为括号的优先级高于其他比较运算符

您的第一个查询相当于

WHERE property_id = 1 OR (property_id = 2
    AND property_id = 3)
检查运算符优先级

在第一个查询where子句中,检查此条件
property\u id=2和property\u id=3,因为
运算符的优先级高于
运算符

在第二个查询where子句中,首先检查此条件
(property\u id=1或property\u id=2)
,因为括号的优先级高于其他比较运算符

您的第一个查询相当于

WHERE property_id = 1 OR (property_id = 2
    AND property_id = 3)

逻辑运算符优先级的可能重复不是SQLErr特有的,因为它们是不同的查询?@EJP问题是为什么它们是两个不同的查询。很多人会认为这些应该产生相同的结果,因为它们是按顺序计算的,而不是根据某些优先级规则。逻辑运算符优先级的可能重复并不特定于SQLErr,因为它们是不同的查询?@EJP问题是为什么它们是两个不同的查询。很多人会认为这些应该产生相同的结果,因为它们是按顺序计算的,而不是按照一些优先规则。所以MySQL查找所有的
操作符并计算它们,然后查找
操作符进行计算?是的,差不多this@Victor:是的。阅读MySQL文档,以便MySQL查找所有
运算符并计算它们,然后查找
运算符进行计算?是的,差不多this@Victor:是的。阅读MySQL文档,如果我不使用括号,MySQL会查找所有和运算符并计算它们,然后查找或运算符进行计算?如果不使用括号,则首先计算
运算符,然后计算
运算符,因为
运算符的优先级高于
运算符。如果不使用括号,MySQL将查找所有和运算符并计算它们,然后查找或运算符进行计算?如果不使用括号,则首先计算
运算符,然后计算
运算符,因为
运算符的优先级高于
运算符