首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL 排除最新 N 筆資料:NOT IN 子查詢寫法

     編輯:關於SqlServer

需求

取得除最新 10 筆以外的所有記錄 (依 inidate 排序)。

寫法

SELECT * FROM table1
WHERE id NOT IN (
    SELECT TOP 10 id FROM table1 ORDER BY inidate DESC
)

注意事項

  • NOT IN 子查詢若包含 NULL 會導致整體無結果,確保 id 為 NOT NULL。
  • 大資料量時 NOT IN 效能較差,建議改用 NOT EXISTS 或 LEFT JOIN ... WHERE right.id IS NULL。
  • SQL Server 2012+ 可用 OFFSET 10 ROWS FETCH NEXT ... 反向邏輯:先按舊到新排序,跳過前 10 筆。

效能優化版 (NOT EXISTS)

SELECT * FROM table1 t1
WHERE NOT EXISTS (
    SELECT 1 FROM (
        SELECT TOP 10 id FROM table1 ORDER BY inidate DESC
    ) t2 WHERE t2.id = t1.id
)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved