MYSQL中NOT IN和NOT EXISTS

? ? 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 里的位置很特別 —— 它藏在 “…