MYSQL过滤数据(四)AND | OR

MySQL AND运算符简介

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

WHERE boolean_expression_1 AND boolean_expression_2

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

 TRUEFALSENULL
TRUETRUEFALSENULL
FALSEFALSEFALSEFALSE
NULLNULLFALSENULL

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


MySQL AND运算符示例

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

MySQL AND运算符示例

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

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

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

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


MySQL OR运算符简介

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

下面是OR运算符的语法:

boolean_expression_1 OR boolean_expression_2

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

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

 TRUEFALSENULL
TRUETRUETRUETRUE
FALSETRUEFALSENULL
NULLTRUENULLNULL

 

运算符优先级

当您在语句中使用多个逻辑运算符时,如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表进行测试。

MySQL OR运算符使用实例优先级介绍

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

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

结果如图所示:


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

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

结果如图所示:


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

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

结果如图所示:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值