NOT INNOT EXISTS 是 MySQL 中用于排除某些数据的两种常见查询方式。它们的功能相似,都用于返回不满足某一条件的结果,但是它们在内部的实现方式以及某些特定场景下的行为有所不同。

1. NOT IN

    NOT IN 是用来排除在指定值集合中存在的值。通常用来与子查询结合,在查询中排除某些值。

SELECT column_name
FROM table_name
WHERE column_name NOT IN (subquery);

假设有两个表:orderscustomers,我们要找出那些没有下过订单的客户。

SELECT customer_id
FROM customers
WHERE customer_id NOT IN (SELECT customer_id FROM orders);

这个查询会返回所有没有出现在 orders 表中的客户 customer_id

如果子查询结果包含 NULLNOT IN 会返回不准确的结果,因为 NULL 代表“未知”,任何与 NULL 比较的结果都会是“未知”(UNKNOWN)。因此,如果子查询结果中包含 NULLNOT IN 可能会导致意外的结果。 

2. NOT EXISTS

    NOT EXISTS 用于检查子查询是否没有返回任何记录。它通常用于子查询中,通过判断子查询是否返回结果来决定是否排除某些数据。

SELECT column_name
FROM table_name
WHERE NOT EXISTS (subquery);

这个查询会返回所有没有在 orders 表中找到相关记录的客户。

NOT EXISTS 不会受 NULL 的影响,因为它仅检查子查询是否返回任何记录。在某些场景下,NOT EXISTS 可以比 NOT IN 更高效,尤其是在子查询中包含 NULL 的情况下,NOT EXISTS 可以避免出现不正确的结果。 

3. 异同总结

    相同点
  • 都是用来排除满足某个条件的数据。
  • 都可用于子查询,返回那些不满足子查询条件的记录。
    不同点

   NOT IN

           如果子查询返回 NULL,可能会影响查询结果,导致意外的“未知”结果。

    NOT IN 通常会将整个结果集加载到内存中,可能导致性能问题,特别是在处理大数据量时。

    NOT EXISTS

           对 NULL 处理更为健壮,不会受到 NULL 的影响。

           通常在处理大数据集时性能更好,尤其是在使用关联子查询时,NOT EXISTS 可以避免不必要的全表扫描。 

    性能差异:

    NOT IN 通常在小数据集上表现良好,但在包含 NULL 或大数据集的情况下,可能会出现性能问题。

    NOT EXISTS 更适用于复杂查询,尤其是在大数据集和 NULL 值的场景下,能够更高效地执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/90512.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/90512.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/90512.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库关系运算之连接

在数据库理论中,关系连接(Join) 是将两个或多个关系(表)中的元组(行)根据一定条件组合成新关系的操作,是关系型数据库中核心且高频使用的操作。其本质是通过共享的属性(列…

npm全局安装后,依然不是内部或外部命令,也不是可运行的程序或批处理文件

虽然通过 npm install -g yarn 安装了 Yarn,但系统无法识别 yarn 命令。这通常是因为 npm 的全局安装目录没有添加到系统的 PATH 环境变量中C:\Users\Administrator>npm install -g yarnadded 1 package in 518msC:\Users\Administrator>yarn yarn 不是内部或…

C++ Proactor 与 Reactor 网络编程模式

🧠 C Proactor 与 Reactor 网络编程模式📌 核心区别概述特性Reactor 模式Proactor 模式事件驱动核心监听 I/O 就绪事件 (可读/可写)监听 I/O 完成事件 (读完成/写完成)I/O 执行者用户线程 主动执行 I/O 操作操作系统 异步执行 I/O 操作控制流同步非阻塞 …

从手动操作到自动化:火语言 RPA 在多系统协作中的实践

在企业日常运营中,很多业务流程需要在多个系统间来回切换:从 A 系统导出数据,到 B 系统校验格式,再到 C 系统录入信息…… 这些跨系统操作步骤繁琐、逻辑固定,却往往依赖人工完成,不仅效率低下,…

Spring Security 实践之登录

前言Spring Security是一个功能强大且高度且可定制的身份验证和访问控制框架,包含标准的身份认证和授权。 本文主要介绍SpringBoot中如何配置使用 Spring Security 安全认证框架并简述相关原理和步骤。核心认证流程解析请求过滤 用户提交登录表单AbstractAuthentica…

华为云开发者空间 × DeepSeek-R1 智能融合测评:云端开发与AI客服的协同进化

前言: 华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,当普惠云资源遇见推理大模型,企业服务与开发效能的范式革命正在加速。华为云开发者空间&am…

二分查找----4.搜索旋转排序数组

题目链接 /** 升序数组在某个位置被分割为前后两部分,前后两部分整体互换;在被改变后的数组中找到目标值 O(log n)---> 二分查找 特点: 旋转后的数组被分割为两个独立的递增区间 左半区的最小值,大于右半区的最大值(mid所在区间的判断依据) 二分策略: 首先判断mid落在左区间…

地球表面附近两点之间距离、高低角和方位角的计算方法,VC++代码实操!

书接上文,这篇文章介绍具体的VC编程实现,代码实操。任何一个算法,你必须将其编写为代码,运行结果正确,才算真正掌握了,否则都是似懂非懂,一知半解,下面先给出仿真结果的截图&#xf…

uniapp各大平台导航组件

最近有个需求要点击导航然后跳出各家导航软件话不多出直接贴出代码&#xff1a;这个可以作为组件引入<template><view><view class"nav" :style"{color: customColor}" click.stop"openMap">{{title}}</view><!-- 弹…

Access开发一键删除Excel指定工作表

Hi&#xff0c;大家好&#xff01;又到了每周给大家更新的时间了&#xff0c;这周给大家讲讲excel的处理操作吧。在开始前&#xff0c;先给大家汇报一下我们框架的进度&#xff0c;最近两周没有直播&#xff0c;所以大家不太清楚目前的进度&#xff0c;框架目前就差权限了&…

无广告终端安全产品推荐:打造纯净办公环境的安全之选

在数字化办公时代&#xff0c;终端安全防护是企业和个人不可忽视的重要环节。然而&#xff0c;许多传统安全软件往往伴随着频繁的广告弹窗和推广信息&#xff0c;不仅干扰正常工作&#xff0c;还可能成为潜在的安全隐患。本文将为您介绍几款「无广告、无捆绑」的终端产品&#…

使用UE5自带节点InteriorCubemap制作假室内效果

Interior Mapping&#xff08;室内映射&#xff09;是一种用着色器方法模拟室内结构纹理的方式&#xff0c;避免了真实对室内场景建模造成的模型面数渲染开销&#xff0c;在《蜘蛛侠》《城市天际线》等游戏中都采用了该技术。 UE自带了节点InteriorCubemap&#xff08;Unity S…

基于单片机睡眠质量/睡眠枕头设计

传送门 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目速选一览表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目功能速览 概述 随着现代社会生活节奏的加快&#xff0c;睡眠质量问题日益受到人们的关注。本研究设计了一种基于…

Ajax第一天

AJAX概念&#xff1a;AJAX 是浏览器与服务器进行数据通信的技术&#xff08;把数据变活&#xff09;语法&#xff1a;1.引入 axios.js&#xff1a;https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js2.使用 axios 函数✓ 传入配置对象✓ 再用 .then 回调函数接收结果&#…

AI大模型各类概念扫盲

以下内容整理自AI&#xff0c;进行一个概念扫盲&#xff1a;Prompt&#xff08;提示词&#xff09; Prompt是用户提供给AI模型的指令或问题&#xff0c;用于引导模型生成特定输出。良好的Prompt设计能显著提升模型的任务理解能力和响应质量&#xff0c;例如通过结构化提示&…

Linux系统编程——网络

一、TCP/UDP 1、osi模型 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层&#xff08;下层为上层提供服务&#xff09; 2、TCP/IP模型&#xff08;TCP/IP协议栈&#xff09; 应用层&#xff1a; HTTP&#xff08;超文本传输协议&#xff09;、FTP&#xff08;文件…

taro+pinia+小程序存储配置持久化

主要通过taro的getStorageSync,setStorageSync实现配置持久化 // https://pinia.esm.dev/introduction.html import { defineStore } from pinia; import { CreditCardDateUtils } from /untils/compute; import { getStorageSync, setStorageSync } from "tarojs/taro&qu…

抖音小游戏好做吗?

从0到1&#xff0c;教你打造爆款抖音小游戏随着移动互联网的发展&#xff0c;抖音小游戏凭借便捷即玩、流量庞大等优势&#xff0c;成为游戏开发者的热门选择。想知道如何开发出一款吸睛又好玩的抖音小游戏吗&#xff1f;下面就为你详细介绍开发流程。一、前期规划明确游戏类型…

Spring Boot 3核心技术面试指南:从迁移升级到云原生实战,9轮技术攻防(含架构解析)

面试官&#xff1a;cc程序员&#xff0c;聊聊Spring Boot 3的那些事儿&#xff1f; 场景背景 互联网大厂云原生架构部面试官老王&#xff0c;与自称"Spring Boot骨灰粉"的cc程序员展开技术对决。 面试过程 第一轮&#xff1a;迁移升级 面试官&#xff1a;Spring Boot…

技术演进中的开发沉思-42 MFC系列:Components 与 ActiveX Controls

点击程序启动时&#xff0c;是不是看过有加载的画面。在VC开发时&#xff0c;可使用 VC 的 Component Gallery&#xff0c;找到 Splash screen 组件&#xff0c;当时觉得组件就是给程序员的暖手宝。一、Component GalleryComponent Gallery 在 VC 里的位置很特别 —— 它藏在 “…