• 【MySQL】高级数据过滤


    高级数据过滤 ?! —— 其实就是 AND,OR,IN,NOT 的用法

    1. AND 的用法

    AND 操作符表示同时满足,用来连接两个或多个需要同时满足的表达式

    例如:选出 vend_id = ‘DLL01’ 并且 prod_price <= 4 的数据。

    代码示例

    select prod_id, prod_price,prod_name
    from Products
    where vend_id = 'DLL01' and prod_price <= 4;
    
    • 1
    • 2
    • 3

    2. OR 的用法

    OR 操作符用来表示在多项条件中只需满足一项的条件筛选。

    例如:选出 vend_id = ‘DLL01’ 或者 vend_id = ‘BRS01’ 的数据

    代码示例

    select prod_id, prod_price,prod_name
    from Products
    where vend_id = 'DLL01' or vend_id = 'BRS01';
    
    • 1
    • 2
    • 3

    3. AND 和 OR 的执行优先级问题

    —— 又名 注意使用圆括号分组操作符

    AND 操作符具有比 OR 操作符更高的优先级。因此,我们在 AND 和 OR 运算符组合使用时,要注意使用圆括号明确分组操作符操作的表达式。(圆括号具有更高的优先级,而且使用圆括号后能减少造成歧义)

    例如:选出vend_id = ‘DLL01’ 或者 vend_id = ‘BRS01’ 生产的所有 prod_price <= 4 的数据

    代码示例:

    错误写法×:

    select prod_id, prod_price,prod_name
    from Products
    where vend_id = 'DLL01' or vend_id = 'BRS01' and prod_price <= 4;
    
    • 1
    • 2
    • 3

    运行结果截图
    在这里插入图片描述
    解释
    因为 and 的优先级更高,因此筛选出的是 vend_id = ‘BRS01’ 条件下prod_price <= 4的数据 以及 vend_id = ‘DLL01’ 的数据

    正确写法√:

    使用 ()明确分组操作符

    select prod_id, prod_price,prod_name
    from Products
    where (vend_id = 'DLL01' or vend_id = 'BRS01') and prod_price <= 4;
    
    • 1
    • 2
    • 3

    4. IN 的用法

    IN 操作符用来指定条件范围,范围内的每个条件都是可选选项。IN 取一组由逗号分割,括在圆括号内的合法值。

    例如: 选出 ‘DLL01’ 和 ‘BRS01’ 公司生产的产品

    select prod_id, prod_name
    from Products
    where vend_id in ('DLL01', 'BRS01');
    
    • 1
    • 2
    • 3
    扩展: IN 和 OR 的区别

    IN 和 OR 操作符可完成同样的功能,但 IN 操作符具有如下优点:

    • 语法更清楚,更直观;
    • IN 操作符的执行速度更快;
    • IN 操作符可以包含其他 select 语句,能够更加动态的建立 where 字句 (后面会慢慢介绍)

    5. NOT 的用法

    NOT 操作符有且只有一种功能,就是否认其后跟的任何条件。其需要用在其要否定的语句前。

    例如:选出除了 vend_id =‘DLL01’ 的所有产品,not 语句放在要否定的语句前面。

    
    select prod_id, prod_name
    from Products
    where not vend_id ='DLL01';
    
    • 1
    • 2
    • 3
    • 4

    尾注: 最近在整合 MyBatis-Plus 写数据库的查询语句的时候,发现自己忘了好多东西的用法,这部分写好了,业务部分代码就可以少写点,还能提高效率,无论现在看是不是真的有用,但是我始终相信一点一滴的积累,加油,少年!!!

  • 相关阅读:
    增量表、全量表、拉链表的应用场景及优缺点详解
    码农人,码农魂,码农都是人上人【Java】值得收藏的【方法递归】经典题目 (1)
    【计算机组成&体系结构】存储系统基本概念
    深度学习:线性回归模型
    用于构建用户界面的JavaScript库--->React
    算法解析:LeetCode——机器人碰撞和最低票价
    m基于3GPP-LTE通信网络的认知家庭网络Cognitive-femtocell性能matlab仿真
    全国心力衰竭日| 仿生“人工心脏”——心衰患者的“心”希望
    汇编常用寄存器以及寻址方式
    【UCIe】UCIe Multi-Module Link 介绍
  • 原文地址:https://blog.csdn.net/liuwanqing233333/article/details/127738322