MySQL AND运算符简介

AND运算符是组合两个或多个布尔表达式的逻辑运算符,并且只有在两个表达式都为true时才返回true。如果两个表达式中的任何一个值为false,AND运算符将返回false。

WHERE boolean_expression_1 AND boolean_expression_2

下面表格介绍AND运算符的结果。

 

TRUE

FALSE

NULL

TRUE

TRUE

FALSE

NULL

FALSE

FALSE

FALSE

FALSE

NULL

NULL

FALSE

NULL

AND运算符通常用于SELECT,UPDATE,DELETE语句的WHERE子句中,以形成过滤结果集的条件。AND运算符也用于inner join或left join子句的连接条件。


MySQL AND运算符示例

我们使用示例数据库中的customers表进行测试。

and join mysql on where顺序 mysql中and_MySQL

以下语句查询位于USA和CA的客户。我们在WHERE子句中使用AND运算符。

SELECT customername,
         country,
         state
FROM customers
WHERE country = 'USA'
        AND state = 'CA';

and join mysql on where顺序 mysql中and_运算符_02

使用AND运算符可以组合多个布尔表达式。例如,以下查询获取位于美国CA州且信用额度(creditlimit)大于100K的客户。

SELECT   customername,
         country,
         state,
         creditlimit
FROM customers
WHERE country = 'USA'
        AND state = 'CA'
        AND creditlimit > 100000;

and join mysql on where顺序 mysql中and_MySQL_03


MySQL OR运算符简介

MySQL OR运算符连接两个或多个布尔表达式。当其中任何一个表达式为true时,它将返回true。

下面是OR运算符的语法:

boolean_expression_1 OR boolean_expression_2

boolean_expression_1 or boolean_expression_2 这个表达式有可能返回true或false。

下表显示了OR运算符的结果。

 

TRUE

FALSE

NULL

TRUE

TRUE

TRUE

TRUE

FALSE

TRUE

FALSE

NULL

NULL

TRUE

NULL

NULL

 

运算符优先级

当您在语句中使用多个逻辑运算符时,如and 和or运算符,MySQL是先计算 AND 运算符,再计算OR运算符。这就是所谓的运算符优先级。

运算符优先级确定运算符的求值顺序。MySQL首先计算具有较高优先级的运算符。

请参阅以下示例。

SELECT true OR false AND false;

 结果如下:

true OR false AND false
-----------------------
1

执行顺序如下:

  1. 首先,MySQL计算AND运算符,这是,false AND false返回false。
  2. 第二,MySQL计算OR运算符,这是,true OR false返回true。

要更改计算的顺序,请使用括号,例如:

SELECT (true OR false) AND false;

 结果如下:

(true OR false) AND false
-------------------------
0

执行顺序如下:

  1. 首先,MySQL计算圆括号中的表达式(true OR false)返回true。
  2. 第二,MySQL计算剩余语句部分,true AND false返回false。


MySQL OR运算符示例

我们使用示例数据库中的customers表进行测试。

and join mysql on where顺序 mysql中and_运算符优先级_04

例如,要获取位于美国和法国的客户,请在WHERE子句中使用OR运算符,如下所示:

SELECT 
    customername, country
FROM
    customers
WHERE
    country = 'USA' OR country = 'France';

结果如图所示:

and join mysql on where顺序 mysql中and_MySQL_05

以下语句获取位于美国或法国并且信用额度(creditlimit)大于10000的客户。

SELECT 
    customername, country, creditLimit
FROM
    customers
WHERE
    (country = 'USA' OR country = 'France')
        AND creditlimit > 100000;

结果如图所示:

and join mysql on where顺序 mysql中and_运算符_06

请注意,如果不使用括号,查询将返回美国的客户或信用额度(creditlimit)大于10000的法国的客户。

SELECT
    customername, country, creditLimit
FROM
    customers
WHERE
    country = 'USA' OR country = 'France' AND creditlimit > 100000;

结果如图所示:




and join mysql on where顺序 mysql中and_MySQL_07