SQL NOT IN 命令詳解

一、基本定義

SQL NOT IN 是 SQL 中一個常見的操作符,用於在 WHERE 子句中指定一個測試值集合,該測試值集合由用逗號分隔的值列表表示。 NOT IN 運算符與 IN 相反。它返回不在指定列表中的所有行。

二、基本語法

SELECT column_name(s) 
FROM table_name 
WHERE column_name NOT IN (value1, value2,...);

在上面的語法中:

  • column_name(s) 指定要返回的列。
  • table_name 指定要從中檢索數據的表。
  • column_name 指定要測試值的列。
  • value1、value2 等指定不允許存在於表中的值。

三、實例演示

例如,我們有一個用戶表 user,存儲了所有已註冊用戶的個人信息。現在我們要查詢所有沒有註冊國際短訊業務的用戶信息:

SELECT * 
FROM user 
WHERE id NOT IN (SELECT user_id FROM international_sms);

在這個示例中,我們使用了子查詢來指定業務列表,然後列出了在 user 表中不匹配此列表的所有用戶。

四、應用案例

1. 刪除指定子查詢結果

假設我們有一個商品 sales 表和一個庫存 inventory 表。現在我們想在 inventory 表中刪除所有商品已售完的記錄。

DELETE FROM inventory 
WHERE product_id NOT IN (SELECT DISTINCT product_id FROM sales);

這裡,我們使用了 NOT IN 運算符和子查詢來指定應該從 inventory 表中刪除的記錄。

2. 查詢兩個表之間缺失的數據

假設我們有兩個表 t1 和 t2,每個表都包含一個 id 列。如果我們想知道在 t1 中存在但在 t2 中不存在的所有 id 值,可以按如下方式查詢:

SELECT t1.id 
FROM t1 
WHERE t1.id NOT IN (SELECT t2.id FROM t2);

在這個示例中,我們使用了 NOT IN 和子查詢來返回在 t1 表中存在的但在 t2 表中不存在的所有 id 值。

3. 查詢滿足多個條件的數據

假設我們有一組訂單數據,包括訂單 ID、產品 ID 和銷售日期等信息。如果我們想查詢在兩個指定日期之間出售的所有產品,可以使用以下代碼:

SELECT * 
FROM orders 
WHERE date BETWEEN '2021-09-01' AND '2021-09-15' 
AND product_id NOT IN (SELECT product_id FROM returns);

在這個示例中,我們使用了 BETWEEN 和 NOT IN 運算符,以查詢滿足兩個條件的訂單。

總結

SQL NOT IN 命令可以用於在 WHERE 子句中指定一個測試值集合。它與 IN 命令相反,返回不在指定列表中的所有行。在實際的 SQL 應用中,NOT IN 通常與子查詢搭配使用,可以提高查詢的靈活性和效率,在數據處理中具有不可替代的作用。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/186330.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-27 05:45
下一篇 2024-11-27 05:45

相關推薦

  • Hibernate日誌打印sql參數

    本文將從多個方面介紹如何在Hibernate中打印SQL參數。Hibernate作為一種ORM框架,可以通過打印SQL參數方便開發者調試和優化Hibernate應用。 一、通過配置…

    編程 2025-04-29
  • 使用SQL實現select 聚合查詢結果前加序號

    select語句是數據庫中最基礎的命令之一,用於從一個或多個表中檢索數據。常見的聚合函數有:count、sum、avg等。有時候我們需要在查詢結果的前面加上序號,可以使用以下兩種方…

    編程 2025-04-29
  • 理解Mybatis中的SQL Limit用法

    Mybatis是一種非常流行的ORM框架,提供了SQL映射配置文件,可以使用類似於傳統SQL語言的方式編寫SQL語句。其中,SQL的Limit語法是一個非常重要的知識點,能夠實現分…

    編程 2025-04-29
  • Git config命令用法介紹:用正確的郵箱保障開發工作

    本文將詳細介紹如何使用git config命令配置Git的全局和本地用戶信息,特別是如何正確使用用戶郵箱,保障Git操作的正常進行。 一、git config命令介紹 Git中的每…

    編程 2025-04-29
  • Python命令大全及說明

    Python是一種高級編程語言,由Guido van Rossum於1989年底發明。它具有良好的語法結構和面向對象的編程思想,具有簡潔、易讀、易學的特點,是初學者以及專業開發人員…

    編程 2025-04-29
  • Python SSH 遠程執行命令

    Python SSH 遠程執行命令是指在一個服務器上執行遠程另一個服務器上命令。如果你需要在本地機器上執行命令,或者在遠程機器上執行本地命令,你都可以使用 SSH。在 Python…

    編程 2025-04-29
  • SQL預研

    SQL預研是指在進行SQL相關操作前,通過數據分析和理解,確定操作的方法和步驟,從而避免不必要的錯誤和問題。以下從多個角度進行詳細闡述。 一、數據分析 數據分析是SQL預研的第一步…

    編程 2025-04-28
  • 剖析命令執行函數

    在編程開發過程中,命令執行函數是非常常見的一個概念。它是指接受一個命令字符串,並將其解析執行,返回相應的結果或錯誤信息的函數。本文將從多個方面對命令執行函數進行詳細的闡述,包括其定…

    編程 2025-04-28
  • 如何使用Python執行Shell命令並獲取執行過程信息

    本文將介紹如何使用Python執行Shell命令並獲取執行過程信息。我們將從以下幾個方面進行闡述: 一、執行Shell命令 Python內置的subprocess模塊可以方便地執行…

    編程 2025-04-28
  • Python中獲取用戶輸入命令的方法解析

    本文將從多個角度,分別介紹Python中獲取用戶輸入命令的方法,希望能夠對初學者有所幫助。 一、使用input()函數獲取用戶輸入命令 input()是Python中用於獲取用戶輸…

    編程 2025-04-27

發表回復

登錄後才能評論