mysql中的IN和NOT IN

ops/2024/10/22 9:53:54/

在MySQL中,INNOT IN 是用于进行集合比较的条件运算符。它们可以用于简化多个 ORAND 条件的查询。这些运算符在查询语句中非常常见,用于检查某个值是否在指定的集合中。

  • IN 运算符用于检查某个值是否在指定的集合中。
  • NOT IN 运算符用于检查某个值是否不在指定的集合中。
  • 使用子查询时要注意空值(NULL)的处理,避免意外的查询结果。
  • 在处理较大的数据集时,使用连接(JOIN)操作可能会比 INNOT IN 更高效。

IN 运算符

IN 运算符用于检查某个值是否在指定的集合中。如果值在集合中,则条件为真。

语法
expression IN (value1, value2, ..., valueN)
示例
  1. 基本使用

    SELECT * FROM employees WHERE department IN ('Sales', 'Marketing', 'HR');
    

    这条查询语句从 employees 表中选择部门为 SalesMarketingHR 的员工。

  2. 使用子查询

    SELECT * FROM employees WHERE department_id IN (SELECT id FROM departments WHERE location = 'New York');
    

    这条查询语句从 employees 表中选择那些部门位于 New York 的员工。

NOT IN 运算符

NOT IN 运算符用于检查某个值是否不在指定的集合中。如果值不在集合中,则条件为真。

语法
expression NOT IN (value1, value2, ..., valueN)
示例
  1. 基本使用

    SELECT * FROM employees WHERE department NOT IN ('Sales', 'Marketing', 'HR');
    

    这条查询语句从 employees 表中选择部门不是 SalesMarketingHR 的员工。

  2. 使用子查询

    SELECT * FROM employees WHERE department_id NOT IN (SELECT id FROM departments WHERE location = 'New York');
    

    这条查询语句从 employees 表中选择那些部门不位于 New York 的员工。

注意事项

  1. 空值处理

    • 使用 NOT IN 时要特别注意空值(NULL)。如果子查询结果或集合中包含NULL值,NOT IN 的结果可能会导致意外行为。为了避免这种情况,可以使用 IS NOT NULL 来过滤掉 NULL 值。
    SELECT * FROM employees WHERE department_id NOT IN (SELECT id FROM departments WHERE location = 'New York' AND id IS NOT NULL);
    
  2. 性能考虑

    • 对于较大的集合,INNOT IN 的性能可能不如连接(JOIN)操作。这是因为 MySQL 需要扫描整个集合以确定结果。在这种情况下,使用连接(JOIN)操作可能会更高效。
    -- 使用 JOIN 代替 IN
    SELECT e.* FROM employees e
    JOIN departments d ON e.department_id = d.id
    WHERE d.location = 'New York';-- 使用 LEFT JOIN 和 NULL 检查代替 NOT IN
    SELECT e.* FROM employees e
    LEFT JOIN departments d ON e.department_id = d.id AND d.location = 'New York'
    WHERE d.id IS NULL;
    

http://www.ppmy.cn/ops/45523.html

相关文章

【Unity脚本】Unity中如何按类型查找游戏对象(GameObject)

【知识链】Unity -> 脚本系统 -> 访问游戏对象 -> 按类型访问游戏对象摘要:本文介绍了Unity中按类型查找游戏对象(GameObject)的五种方法,并提出了使用这些方法的最佳实践。 本文目录 一、访问游戏对象的方法二、如何按…

FPGA新起点V1开发板(八-语法篇)——状态机

文章目录 一、两个状态机模型二、状态机设计(四段论)2.1 状态空间定义2.2 状态跳转(时序逻辑)2.3 下个状态判断(组合逻辑)2.4 各个状态下的动作2.5 三段式 一、两个状态机模型 二、状态机设计(四…

【机器学习】AI大模型的探索—浅谈ChatGPT及其工作原理

📝个人主页:哈__ 期待您的关注 目录 📚介绍ChatGPT 1.1 什么是ChatGPT 1.2 ChatGPT的应用场景 💡基础概念 1. 人工智能和机器学习 1.1 人工智能(AI)简介 1.2 机器学习(ML)简…

网络代理总结

网络代理(Network Proxy)是一种网络架构中的服务,它充当客户端和目标服务器之间的中介。其工作原理是接受客户端的网络请求,然后代表客户端向目标服务器发起请求,获取响应后再将响应结果传递回客户端。这个过程使得客户…

如果查看svn的账号和密码

一、找到svn存放目录(本地默认存放SVN用户信息的目录为:C:\Users\Administrator\AppData\Roaming\Subversion\auth\svn.simple)每个人的电脑环境不一样,因人而异。 如果找不到直接搜索svn.simple 二、下载密码查看工具 链接: 百…

IDEA插件:JarEditor 修改jar包神器

JarEditor神器 IDEA插件,用于在不解压的情况下直接修改jar中的文件,包括类和资源文件。 依赖IDEA最低版本为IDEA2020.3,低于这个版本的无法使用 直接在jar中编辑类/资源文件,无需解压缩在jar中添加新文件/字典删除jar中的文件/字…

2024上半年软考考试落下帷幕,下半年还能考哪些科目?

距离2024下半年的软考考试还有5个多月时间,有不少朋友开始计划的下半年的考试,那么下半年有哪些科目可以考试呢?一起来看看吧! 2024下半年开考资格: 高级:系统规划与管理师、系统分析师、系统架构设计师、…

unity制作app(9)--拍照 相册 上传照片

1.传输照片(任何较大的数据)都需要扩展服务器的内存空间。 2.还需要base64编码 2.1客户端发送位置的编码 2.2服务器接收部分的代码