首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SQL NOT IN 用法:排除指定值的查詢條件

     編輯:程式設計綜合問答

語法

WHERE column NOT IN (value1, value2, ...)

範例

-- 查詢 id 不在 1,2,3,4,8 的記錄
SELECT * FROM table WHERE id NOT IN (1,2,3,4,8);

-- 子查詢形式
SELECT * FROM orders 
WHERE customer_id NOT IN (SELECT id FROM customers WHERE status = 'banned');

注意事項

  • NULL 值陷阱:若列表包含 NULL,整個 NOT IN 永遠回傳 false/unknown。
    解決:WHERE id NOT IN (SELECT id FROM ... WHERE id IS NOT NULL) 或改用 NOT EXISTS。
  • 效能:大列表或子查詢時,NOT EXISTS / LEFT JOIN ... WHERE right.id IS NULL 通常優於 NOT IN。
  • 資料型別:列表值型別需與欄位一致,隱式轉換可能導致索引失效。

最佳實踐對照

場景推薦寫法
小型常數列表NOT IN (1,2,3)
大型列表/子查詢NOT EXISTS (SELECT 1 FROM ... WHERE ...)
可為 NULL 欄位NOT EXISTS 或 LEFT JOIN ... IS NULL
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved