• 【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 写数据库的查询语句的时候,发现自己忘了好多东西的用法,这部分写好了,业务部分代码就可以少写点,还能提高效率,无论现在看是不是真的有用,但是我始终相信一点一滴的积累,加油,少年!!!

  • 相关阅读:
    只要15分钟,轻松get费用报销系统
    css3 中选择器间有空格与没空格的区别?
    CDH大数据平台 24Cloudera Manager Console之hbase、hive整合配置(markdown新版)
    MyBatis 执行原理,源码解读,基于SpringBoot讲解
    如何通过SQL批量删除重复数据
    Postgres 数据库查询表锁,释放表锁
    Leetcode 1761. Minimum Degree of a Connected Trio in a Graph (图好题)
    OpenGL之纹理过滤(Texture Filtering)、MipMap方法、纹理坐标
    Day1使用Burpsuite抓包工具抓包,改变UA头使得手机和pc端界面互相转换
    Vatee万腾的科技征程:Vatee数字化创新的前沿探讨
  • 原文地址:https://blog.csdn.net/liuwanqing233333/article/details/127738322